この記事は、ただの集団 Advent Calendar 2020 の6日目です
昨日は、同じグループのメンバーryoさんの、 JVで人事立ち上げてみて でした
毎年、開発部に絞らずにアドベンドカレンダーやってるから、いろんな部署のいろんな人の話が聞ける良い機会で私はこのアドベントカレンダーの時期が大好きです
はじめに
私は、社会人になってからプログラミングをはじめました。
そこからずっと主な言語は、Scalaでした
他の言語のタスクが来たときは特にScalaだとこのメソッドあるけど、この言語にもあるのかなー。のようなモチベーションでググってます
今回は、新規プロダクトの立ち上げの際にVueを書く機会があったので、その時に発見したjsの発見をメモとして残します!
※サンプルコードには、TypeScriptも使用しています。
Option.getOrElse
私の大好きなメソッドの一つ
Scala
def getName(nameOpt: Option[String]): String = {
nameOpt.getOrElse("名前の指定なし")
}
println(getName(Some("ando"))) // ando
println(getName(None)) // 名前の指定なし
JavaScript
function getName(nameOpt?: string): string {
return nameOpt ?? "名前の指定なし"
}
console.log(getName("ando")) // ando
console.log(getName(undefined)) // 名前の指定なし
可読性のScala、文字数的にはjsって感じ
Collection.map
これも、私の大好きなメソッドの一つ
Scala
def suffixAsobase(hinatazakas: Seq[String]): Seq[String] = {
hinatazakas.map(hinatazaka => s"${hinatazaka}あそばせ")
}
println(suffixAsobase(Seq("かとし", "こさかな", "みーぱん", "齊藤京子")))
// Seq(かとしあそばせ, こさかなあそばせ, みーぱんあそばせ, 齊藤京子あそばせ)
JavaScript
function suffixAsobase(hinatazakas: string[]): string[] {
return hinatazakas.map(hinatazaka => hinatazaka + "あそばせ")
}
console.log(suffixAsobase(["かとし", "こさかな", "みーぱん", "齊藤京子"]))
// ["かとしあそばせ", "こさかなあそばせ", "みーぱんあそばせ", "齊藤京子あそばせ"]
そのまま
Collection.find / String.contains
Scala
val morningMusumes = Seq("ゴマキ", "鞘師", "まーちゃん", "尾形")
println(morningMusumes.find(_.contains("ゴ"))) // Some(ゴマキ)
JavaScript
const morningMusumes = ["ゴマキ", "鞘師", "まーちゃん", "尾形"]
console.log(morningMusumes.find(musume => musume.includes("ゴ"))) // ゴマキ
戻り値の型注意
Collection.headOption / Collection.tail
Scala
val nogizakas = Seq("生田", "なーちゃん", "白石麻衣", "かっきー", "久保ちゃん")
println(nogizakas.headOption) // Some(生田)
println(nogizakas.tail) // Seq(なーちゃん, 白石麻衣, かっきー, 久保ちゃん)
JavaScript
const nogizakas = ["生田", "なーちゃん", "白石麻衣", "かっきー", "久保ちゃん"]
console.log(nogizakas.shift()) // 生田
console.log(nogizakas) // ["なーちゃん", "白石麻衣", "かっきー", "久保ちゃん"]
mutable怖い
Collection.init / Collection.last
Scala
val sakuras = Seq("天ちゃん", "理佐", "梨加", "ねる", "てち")
println(sakuras.last) // てち
println(sakuras.init) // Seq("天ちゃん", "理佐", "梨加", "ねる")
JavaScript
const sakuras = ["天ちゃん", "理佐", "梨加", "ねる", "てち"]
console.log(sakuras.pop()) // てち
console.log(sakuras) // ["天ちゃん", "理佐", "梨加", "ねる"]
終わりに
getOrElseので感動して書きはじめたけど、意外と数はなかったな
immutable推奨してる言語と、mutableなので厳密に完全一致じゃないので、ご指摘いただける際はここ以外でお願いします
(途中から、sample誰にしようかなーの趣旨に変わってたな )