2016-05-30 14 views
1

私はパラメータがスウィフトでどのように機能するかを理解しようとは予想引数の型にint型の値を変換できません「...」

class NumberIncreaser { 


func numberIncrementor(var number:Int)->Int{ 
    number += 1 
    return number 
} 


var anotherNumber = numberIncrementor(3) 



} 

は、しかし後であっても、明示的にすることを言及し、次のようにこのように単純なクラスを書きましたメソッド 'numberIncrementor'はIntをとり、XcodeはnumberIncreaserオブジェクトを要求します(正しい専門用語を使用していて、プログラミングに新しいことを願っています)。私がクラスを削除すると、メソッドは完全にうまく動作することに気付きました。私はなぜこれがそうであるか知りたいのですが、どのように解決することができますか?

ありがとうございます!

+0

あなたの問題はclass' 'の範囲でコードを実行している:

class NumberIncreaser { class func numberIncrementor(number: Int) -> Int { return number + 1 } var anotherNumber = NumberIncreaser.numberIncrementor(3) } 

もう一つの方法は、そのようanotherNumber怠惰なプロパティを作成することです。 'methods'や' global'スコープの範囲でそれを行う必要があります。 –

答えて

1

コードはコンパイルされません。

class NumberIncreaser { 

    static func numberIncrementor(var number:Int)->Int{ 
     number += 1 
     return number 
    } 

} 

var anotherNumber = NumberIncreaser.numberIncrementor(3) 

または1つ別の変形例:また

class Number { 

    var number: Int 

    init(number: Int) { 
     self.number = number 
    } 

    func increasedNumber() -> Int { 
     return number + 1 
    } 
} 

var anotherNumber = Number(number: 3).increasedNumber() 
+0

これは間違いなく機能します。しかし、クラス内で別の数値を初期化しなければならないという条件があれば、どうしますか? –

+1

@AkshanshThakur第2の変種を考えてみましょう。それはあなたの質問に答えますか? –

+0

待って、わかった。良い仕事、私はそれにいくつかの時間を費やすでしょう。応答していただきありがとうございます。 –

0

、FUNCパラメータ宣言でVARを使用しないでください:

class NumberIncreaser { 
    static func numberIncrementor(number: Int) -> Int { 
     let answer = number + 1 
     return answer 
    } 
} 

var anotherNumber = NumberIncreaser.numberIncrementor(3) 
+0

エラーはありませんが、この結果は出力されません。 –

0

varパラメータは番号がAであるため、廃止されているこのことを考えてみましょうそれを不変にする定数。 numberIncrementorはインスタンスメソッドなので、呼び出すこともできません。 class func numberIncrementorとあなたはそうのようにそれを呼び出す:アウト

方法はclassまたはstaticキーワードで宣言を付けることによってnumberIncrementorクラスまたは静的メソッドを作ることであろうNumberIncreaser.numberIncrementor(3)

class NumberIncreaser { 

    func numberIncrementor(number: Int) -> Int { 
    return number + 1 
    } 


    lazy var anotherNumber: Int = self.numberIncrementor(3) 

} 
関連する問題