Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。75件0Swiftで、以下のコードが何をやっているのか教えてください。})私には、上記のコードを読んでも、「クロージャを使って、何らかの値を足し合わせたりしている感じなんだろうか?」というざっくりしたことしか分かりません。エスケープ文字回避なのか何なのか、(input.key.rawValue)の前の部分に、バックスラッシュが入っている理由や、"|"が入っている理由が分かりません。プログラム内の他の箇所にresult変数やinput変数が出てきていないのに突然登場してきて理由などもよく分かりません。reduceの後に空白の文字列、""が登場しているのは、この文字列に何かを足し合わせて代入しているという感じなのでしょうか??全体的にswiftのことをよく知らないのでこの文法について教えていただけると嬉しいです。「全体的にswiftのことをよく知らない」との事でしたら、入門書や入門サイト(残念ながら日本語の良いサイトは私は知りませんが...)を見て、基本的な事項については習得してからご質問を書くことをお勧めしておきます。Q&Aの形式でプログラミング言語の基本を学習するのは、かえって面倒になることが多いです。ちなみにSwift以外のプログラミング言語のことなら多少は知っている、と言う場合にはそのことを書いておくと、よりわかりやすい説明を得られるかもしれません。前置きが長くなりましたが、今回の質問内容については、ある程度範囲が絞り込めているので、それぞれ回答してみようと思います。(input.key.rawValue)の前の部分に、バックスラッシュが入っている理由Swiftの文字列補間と言うものを使っています。"..."と言う構文が文字列リテラルを表していると言うことまではおわかりのようですが、Swiftの場合文字列リテラルの途中に\(式)と言うものを挟み込んでやると、その式を文字列変換したものと他の部分をつなげた文字列を作ってくれます。b)の部分は式として評価された結果の3が表示されているのがわかるでしょう。=の側の+や=には何の意味もありません。文字列に含まれる文字として+や=を表示したかったからそこに入れているだけです。あなたが例に挙げられた"|"も同じことです。それを";"なんかの別の文字に変えても、文字列の中身にその通りに入っていくだけです。b型の計算を繰り返し行った結果を計算するためのメソッドです。例では文字列を作っていますが、最初は数値の方がわかりやすいでしょう。//->15reduceの引数のうち、最初の0が初期値、2個目の+が繰り返して欲しい計算を表しています。書くのとほとんど同じ意味になります。result行いたい計算は足し算ばかりではないでしょうから、第2引数で指定できるようになっています。掛け算ならこんな風に書けます。//->120では、もっと複雑な計算をしたかったらどう書けば良いのでしょうか。//->12345Swiftでは、このような場合に、任意の「計算」を引数として渡すためにクロージャというものを使います。基本はこんな構文です。}(単純な「式」1個の代わりにもっと複雑な計算も書けるのですが、ここでは省略しておきます。)上の繰り返しは、reduceを使うとこんな風に書けます。inputは仮引数で、お好みなら任意の別の名前に変えても構いません。x})Swiftのクロージャでは{の直後の「仮引数」はその場で宣言されたことになります。inの部分も省略できるんですが、ここではその記法にも触れないでおきます。)「プログラム内の他の箇所にresult変数やinput変数が出てきていないのに突然登場してきて理由」はお分りいただけましたでしょうか。「reduceの後に空白の文字列、""が登場している」のは、reduceに与えるための「初期値」だということは、もうお判りいただけるでしょうか。//->1;2;3;4;5;この繰り返し、空文字列""から始めて、それに"数字;"という文字列を付け加えるというものです。これは簡単にreduceに置き換えられて、こう書けます。"\(input);"})ここでは文字列の連結に+演算子を使いましたが、SwiftのString型にはappendingというメソッドがあり、そちらも文字列の連結に使えます。str2と書くのとstr1.appending(str2)と書くのとは全く同じ結果になります。result.appending("\(input);")})大変ざっくりですが、ご質問頂いた項目については答えたつもりです、いかがだったでしょうか?(結構な長文になってしまいましたが、「ざっくり」でなく、ちゃんと書くと、もっとはるかに長くなってしまいます。)リンク先のようなサンプルアプリでも、基本がわからないまま読み解いていくのはかなり難しいだろうと思います。どのような目的でSwiftのコードを読んでいっておられるのか分りませんが、「順番間違えると帰って時間がかかるんじゃないですか」とは言っておきたいと思います。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。