Skip to content

Instantly share code, notes, and snippets.

@sifue
Created April 22, 2014 02:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sifue/11163362 to your computer and use it in GitHub Desktop.
Save sifue/11163362 to your computer and use it in GitHub Desktop.
切り出したい処理が処理の中間にあるメソッド
import java.nio.charset.Charset
import scala.util.Random
/**
* ランダムに文字列を一つだけ埋め込むことにできるテンプレートを取得する
*/
object RandomTemplateProvider {
private val templates = Seq(
"<html><body><h1>%s</h1></body></html>",
"# %s",
"\(^o^)/%s\(^o^)/",
"⊂(  ੭ु⁾⁾`ω´)੭ु⁾⁾<%s"
)
def get: String = Random.shuffle(templates).head
}
/**
* 切り出したい処理が処理の間にある重複行のある2つのメソッドを持つオブジェクト
*/
object Duplicate extends App {
/**
* メッセージを受け取りテンプレートに埋め込んだ上でそのUTF-8でのバイト数と内容を表示する
* @param message
*/
def printByteLengthAndContent(message: String) = {
val template = RandomTemplateProvider.get // 重複行
val content = String.format(template, message) // 重複行
val length = content.getBytes(Charset.forName("UTF-8")).length
println(length) // 重複行
println(content) // 重複行
}
/**
* メッセージを受け取りテンプレートに埋め込んだ上でその文字数と内容を表示する
* @param message
*/
def printCharLengthAndContent(message: String) = {
val template = RandomTemplateProvider.get // 重複行
val content = String.format(template, message) // 重複行
val length = content.length
println(length) // 重複行
println(content) // 重複行
}
printByteLengthAndContent("こんにちわ")
printCharLengthAndContent("おはよう")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment