2016-05-10 12 views
2

私はチームツリーハウスのコードチャレンジを行いました。私は質問したい問題がありました。基本的には、enumの特定の場合をとり、指定されたオブジェクトを初期化する列挙型の内部にfuncを作成しました。それは列挙型の中にそれを作成するように私に言ったが、残念なことに私がこれを行うとき、私はいくつかの誤りに出くわした。私はenumの外でそれを行うことで挑戦を終えることができましたが、私はそれがまさに私がやろうとしていたものではないと思います。迅速なタイプの問題?

私の問題は、オブジェクトUIBarButtonItemが返されたときに定数に割り当てられた場合、定数の型が "() - > UIBarButtonItem"か、スイッチの設定に応じて、 "(Button) - > UIBarButtonItem"のように出てきます。この場合、「 - 」記号が何を意味するのかは分かりません。どうしてクラスに完全に変わっていないのですか?ここで何が起こっているのですか?この直前のチュートリアルでは、まったく同じことをしたようですので、なぜうまくいかないのか分かりません。

これは私が実行しているコードで、UIBarButtonItemクラスは含まれていません。私はこれが私が求めていることを理解するのに十分な情報であることを願っています。

+0

よしの下に見つけることができますので、なぜ変数は機能を保持しません目的のオブジェクトの代わりに、その関数がオブジェクトを返すかどうか?それが役立つ場合は、コードを表示するために投稿を編集しました。 – Resistant

+0

ええ、ありがとう、私はインスタンスでそれを呼び出すことはなかったが、それはそれを渡す必要があったので私はそれがそれを呼び出すとそれを渡すことは意味がないと思ったのでだったスイッチを自己に変えると、それはもっと意味がありました。私は実際にそれを呼んだ部分を変更したことはありません。それはもはや議論があったことがもはや特定されていなくても、私はまだやり遂げることができました。驚いたことに、何も間違いはありませんでしたが、少なくとも私は理解しています。助けてくれてありがとう! – Resistant

答えて

1

Buttonインスタンスの代わりにButtonタイプのtoUIBarButtonItem()メソッドを呼び出しています。これは何か特別なことをする理由です:それはあなたがdoneにバインドするカリー化された関数を返します。しかし、結果は依然として機能です。あなたはおそらく行うには何を意味

はあなたdoneオブジェクトのメソッドを呼び出すです:

let done = Button.Done("Done") 
let doneButton = done.toUIBarButtonItem() 

より詳細な説明はhttp://oleb.net/blog/2014/07/swift-instance-methods-curried-functions/

+0

さて、今、私は理解しています。元々私はtoUIBarButtonItem関数をButton型にしていました。これはパラメータとしてdoneオブジェクトを渡さなければならないことを意味していたので、このメソッドをどのように呼び出すのか混乱していました。 。 私はスイッチのButtonオブジェクトが必要でしたが、その後、私はそれを削除して自己をスイッチすることができたことに気付きました。だから私のコードの残りの部分は同じままだったが、私はもう何も渡す必要がないことを忘れていたと思う。私は引数が指定されていないときにxcodeを渡しても驚いています。ありがとう! – Resistant