Scala

for式のフィルタ

カレントディレクトリ内のcsvファイルの名前だけ出力 C#で書いた場合 例によってLinqは使わない。 var files = Directory.GetFiles("."); foreach (var file in files) { if (file.EndsWith(".csv")) Console.WriteLine(file); } Scalaでフィルタを使った場…

Scalaの連続パラメータ

C#での可変長引数は void Function(params string[] args) { // }と書く。 対してScalaでは def function(args: String*) = { // }と記述する。呼び出しかたは同じ。 function(“a”, “b”, “c”)とする。 ただし、C#はの場合は以下のように配列を渡せる Functio…

ListとNil

tumblrがハードウェアアップデートとやらでポストができないのではてなへ。短いポストはあまりこっちに書きたくないのだがまあいいか。最近こっち書いてないし。 で なんてことはなくて、ScalaではイミュータブルなシーケンスとしてListがあるのだけれど、空…

Scalaの配列で見るapplyとupdateメソッド

val testArray = new Array[String](2)という配列を定義する。一つ目の要素に値を入れる場合は testArray(0) = “Hello”とするのが当然。だが実はこれは内部では testArray.update(0, “Hello”)に置き換わっている。つまり、括弧で囲まれた1個以上の引数を伴…

集合(Set)はイミュータブル版とミュータブル版があるんだよ

名前空間が違うので完全名は違うけど以下の2つがある scala.collection.immutable.Set scala.collection.mutable.Set ちなみに普通に初期化してしまうと、問答無用でイミュータブル版になるので注意。 イミュータブル版は要素の追加に注意が必要 その前にま…

タプルの要素アクセス

Scalaのタプルのアクセスはこんな感じ。 val pair = (11, "test") println(pair._1) println(pair._2)どうして1から始まるのか。そもそも括弧と番号でアクセスできないのは何故か。 答え ご存知の通り配列やListの括弧でのアクセスは実際はapplyメソッドに置…

Listのメソッド。Scalaの場合とC#での書き方の違い。

あまり対比させるのは良くないと思いつつ。ただLinqは無しで。なぜって、僕の仕事環境ではLinqはまだ使えないからですよ!悔しいからですよ! 対比表 条件 Scala C# 生成 val list = List("a", "b", "aa", "bb", "ccc") var list = new List() { "a", "b", "…