6
func getWeatherString(local:Area) -> String
{
   return ["晴れ","曇り","雨"][local.weather]
}

上記の return ["晴れ","曇り","雨"][local.weather] の構文が理解できません。
これはなんという仕組みなのですか?
ネットで調べようと思ってもキーワードがわかりません。

yohjp
  • 10,194
  • 2
  • 22
  • 91
TAKA
  • 369
  • 2
  • 13

3 Answers3

3
return ["晴れ","曇り","雨"][local.weather]

この式を、複数の式に分解して書き直しましょう。そうすれば理解が早いかもしれません。

let number: Int = local.weather
let weathers: [String] = ["晴れ","曇り","雨"]
let theWeather: String = weathers[number]
return theWeather

配列から、添字を使って要素を取り出している処理ということがわかります。

Harawo
  • 4,599
  • 2
  • 13
  • 17
2

["晴れ","曇り","雨"]はArrayになります。
local.weatherIntegerではないでしょうか?
ですので、local.weatherは0でしたら"晴れ”になります。2でしたら"雨"です。普通の構文ですがただ変数を使っていません。

2

ただの配列で、[要素][添字]となっています。

println(["晴れ","曇り","雨"][0])
println(["晴れ","曇り","雨"][1])
println(["晴れ","曇り","雨"][2])

晴れ
曇り
雨

と出力されます。

fuzzball
  • 169
  • 5
  • ご返事ありがとうございます。 2次元配列ということは、

    let weather :[[String]] = [["晴れ","曇り","雨"]]

    の2次元配列のインスタンスを生成して、 weather[0][0]は、["晴れ","曇り","雨"][0] と 同義語になっているということですか?

    なにかぴんときませんが。。。

    – TAKA Aug 31 '15 at 04:57
  • 勘違いに気付きましたので、該当部分を修正しました。失礼しました。 – fuzzball Aug 31 '15 at 05:23
  • @fuzzball 回答本文が更新されましたので、私のコメントを削除しました。 – Harawo Aug 31 '15 at 06:13