Swift 2.2 (Xcode7.3.1, OSX 10.11.4)でコマンドラインツールを作成しています。
エラーではないのですが、デバッグ中に不思議な動きがあったため質問させて頂きます。
プログラムの内容は下記です。
1.何らかの質問を print() で表示
2.標準入力の readLine() 関数で待ち受け
3.用意した選択肢のいずれかを選んだら終了
3.それ以外の入力があった場合は再度同じ質問を表示する
###該当のソースコード
Swift2.2
1let a = ["北海道", "大阪", "東京", "あきらめる"] 2while true { 3 4 print("日本の首都は?") 5 for (id, v) in a.enumerate() { 6 print("\(id): \(v)") 7 } 8 9 if let input = readLine(), i = Int(input) where 0 <= i && i < a.count { 10 switch i { 11 case 0, 1: print("残念!") 12 case 2: print("正解!") 13 case 3: print("・・・") 14 default: break 15 } 16 break 17 } 18}
これを実行すると readline()関数の箇所で入力を待ち受けてくれると思っていたのですが、
コンソール画面上で待ち受けている状態(プログラムは実行中)で、何となく
Swift2.2
1print("日本の首都は?")
の行に BreakPoint を設定してみると、その位置でプログラムが待ち受ける状態になりました。
あれっ?と思いそのままF6を押してみると、通常通りStep Over ができてしまい、
readLine() を待たずに再度該当の print() が実行されました。
どうしてこのような現象が起きるのでしょうか?
途中で BreakPoint を設定しなければ想定している動きになっている気がするのですが、
それが実現できているのか不安になり質問させて頂きました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/05/12 11:57
2016/05/12 13:32