Swiff 基礎文法最速マスター (他の型と操作編)

文字・文字列

Swiff の文字列型は UTF-8 文字の配列、コレクションまたはシーケンスに見えます。
文字列リテラル、文字リテラルは以下のように書きます:

let a = "Hello, World!"    // 文字列

let b = '*'                // 文字

文字列操作

各種文字列操作です。
これらの操作は Stringインスタンスメソッドとして定義されています。

長さ

lengthsize の好きな方を使用できます。

"Hello, World!".length         // => 13 (文字数)
"あいうえお".size               // => 5 (文字数)
"Hello, World!".byte_length    // => 13 (バイト数)
"あいうえお".byte_size          // => 15 (バイト数)

検索

"Hello, World!".index_of( "W" )     // => 7
"Hello, World!".include?( "ll" )    // => true
"Hello, World!".contains?( ", " )    // => true

結合

"Hello, ".concat( "World!" )          // => "Hello, World!"
"Hello, " + "World!"                  // => "Hello, World!"
[ "Hello", "World!" ].join( ", " )    // => "Hello, World!"

分割

"Hello, World!".split( ", " )    // => [ "Hello", "World!" ]

分割

"Hello, World!".split( ", " )                        // => [ "Hello", "World!" ]
"Hello, World!".split_iterator( ", " ).to_array()    // => [ "Hello", "World!" ]

切り出し

基本的には文字数で切り出すことになります。

"Hello, World!"[0..4]             // => "Hello"
"Hello, World!".slice( 7, 12 )    // => "World"

配列

Swiff の配列型は固定長です。
別の型も要素として含めることができますが、object 型の配列になってしまうかもしれません。

let foo = [ 1, 3.14, "hoge" ]

let baz : int[] = [ 1, 2, 3 ]

配列の操作

殆どは .NET の Enumerable を参考にしています。

配列の生成

Array.from( 4, index => index * 2 )    // => [ 0, 2, 4, 6 ]
Array.from_element( 3, "abc" )         // => [ "abc", "abc", "abc" ]

代入と参照

let foo = [ 1, 2, 3 ]

let a = foo[1]    // => 2

要素の個数

[ 1, 2, 3 ].size      // => 3
[ 1, 2, 3 ].length    // => 3

先頭の要素を取り出す

[ 1, 2, 3 ].first                           // => 1
[ 1, 2, 3 ].first( n => ( n % 2 ) == 0 )    // => 2

末尾の要素を取り出す

[ 1, 2, 3 ].last                           // => 3
[ 1, 2, 3 ].last( n => ( n % 2 ) == 1 )    // => 3

全ての要素が条件を満たしているかどうか

[ 2, 2, 2, 2 ].all( x => x == 2 )          // => true

いずれかの要素が条件を満たしているかどうか

[ 1, 2, 3, 4 ].any( x => x == 2 )          // => true

条件を満たす要素の個数

[ 2, 2, 2, 2 ].count( n => n == 2 )        // => 4