ホーム DoRuby rubyistのためのscala (1) 値と式

rubyistのためのscala (1) 値と式

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。


Rubyで書くあれはScalaだとどう書くの?シリーズ。 今回は値や式についてまとめてみました。

数値

種類RubyScala備考
整数123123 2147483647L整数は32bit(Int),64bit(Long)の2種類がある
実数123.45123.45 123. 123.45d 123.45f実数はDoubleとFloat
浮動小数1.2e-31.2e-3
16進整数0xffff0xffff
8進数0377ゼロから始める8進数表記はScala 2.11から非推奨
2進整数0b10112進数のリテラルなし
桁区切り文字1_000_000_000桁区切り文字はなし

文字列

種類RubyScala備考
ダブルクォート"this is a string expression\n""this is a string expression\n"
シングルクォート'this is a string expression''a'シングルクォートはChar型を表すため文字列には使えない
シンボル:aaa'aaa
ヒアドキュメント<"""foo bar baz """改行を含む文字列はダブルクォートを3つ重ねる(Raw String)。バックスラッシュによるエスケープが効かない。
式埋め込み"foo #{1 + 2} baz"s"foo ${1 + 2} baz"ダブルクォートの前に小文字のs (interpolator) を置く
フォーマットsprintf("foo %d baz", 123) "foo %d baz" % [123]"foo %d baz".format(123)

変数

種類RubyScala備考
変数a = 123var a = 123
定数A = 123val a = 123変数をvalで宣言すると再代入がコンパイルエラーになる(Rubyの定数より厳格)

演算子

ScalaもRubyと同じように演算子の一部がメソッドのシンタックスシュガーとして定義されている。

1 + 2 は 1.+(2) のシンタックスシュガー

種類RubyScala備考
代入foo = barfoo = bar再代入が必要な時はvarで宣言する
配列参照array[1]array(1)カッコによる配列参照はメソッド呼び出し .apply(n) のシンタックスシュガー
属性参照foo.barfoo.bar引数なしのメソッドをカッコ省略できる
自己代入foo += 1foo += 1再代入があるのでvar変数として宣言が必要
多重代入foo, bar, baz = 1, 2, 3 foo, bar, baz = [1, 2, 3](foo, bar, baz) = (1, 2, 3) Array(foo, bar, baz) = Array(1, 2, 3)多重代入はパターンマッチのシンタックスシュガー
範囲式1 .. 201 to 20 1.to(20)整数クラスの .to() メソッドを使う。引数が1つしかないメソッドはドットやカッコを省略できる。
アンド条件foo && bar foo and barfoo && bar演算子 and は使えない
オア条件foo || bar foo or barfoo || bar演算子 or は使えない
否定!foo not foo!foo演算子notは使えない
3項演算子obj == 1 ? foo : barif (obj == 1) foo else bar3項演算子がないのでif式を使う

※読みやすいレイアウトでまとめましたサイトを作りましたので、こちらもご参照ください。
http://kkismd.github.io/rb2scala/

記事を共有

最近人気な記事