2016-08-12 15 views
0

私は次のエラーが発生します: "値に割り当てることはできません: '単語'は 'let'定数です 私はこれがなぜ起こるか把握できません。 誰かが私を助けることができたら、私はそれをたくさんいただきたいと思います。ここで 値に割り当てることができません: '単語'は 'let'定数です

はコードです:

import UIKit 

class ViewController: UIViewController { 

    var word1 = "" 
    @IBOutlet weak var label: UILabel! 

    func writeWord(word: String){ 
     word = "Example" 
    } 

    @IBAction func button(sender: AnyObject) { 
     writeWord(word1) 
     label.text = word1 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 
} 
+3

をあなたの 'writeWord'方法で達成するために、正確に何をしようとしている。

は、あなたがしたいですか? – Hamish

+2

今ここでやりたいことが分かっているのかどうか分かりません –

答えて

3

何が達成したいですか?そうする

func writeWord(word: String){ 
    word = "Example" 
} 

唯一の方法は次のとおりです。

paramは、渡されたので、あなたが方法

func writeWord(var word: String){ 
    word = "Example" 
} 

代わりの

func writeWord(word: String){ 
    word = "Example" 
} 

を記述する必要がありスウィフト2では

func writeWord(word: String){ 
    var word = word 
    word = "Example" 
} 
+0

なぜこの回答が投票に失敗したのか不思議です。それは正しいようだと私を助けた。多分それをSWIFT3と表示することは役に立ちます。 – bobwki

+0

私は元の投稿が答えが意味をなさないかどうかを知るためにはあまりにも混乱していたと思います。素敵な一日を持ってください –

+0

答えは少し小さいですが、より多くの影響を受けたおねえさん – Jaydip

-1

関数はデフォルトでですは定数であり、値を変更できません。 param値を変更するには、変数を明示的に変更可能にする必要があります。スイフト3では、この問題に直面することはありません。

+2

https://github.com/apple/swift-evolution/blob/master/proposals/0003-remove-var-parameters.md – luk2302

+0

まだ動作していません –

+0

[Swift 3で削除されたvarパラメータ](http: /stackoverflow.com/questions/36164973/var-parameters-are-deprecated-and-will-be-removed-in-swift-3)**また、まだ 'let' **です。 – Dopapp

6

this answerを参照してください。

これはあなたの質問を解決するようですが、Swift 3より前のバージョンのみのためです。

Swiftの関数のパラメータは不変ですが、編集することはできません。 (src

また、文字列はvalue types—not reference typesです。つまり、明らかに、パラメータwordは、関数に渡される変数への参照ではありません。

値を更新するには、関数に戻り値を追加するか、またはself.wordによってアクセスされるクラス変数wordを追加する必要があります。あなたが値を返すことにした場合

、あなたは次のようにそうするでしょう:

func writeWord(word: String) -> String { 
    var mutableWord = word 
    // do stuff to word(?) 
    return mutableWord 
} 

私は正直に本当にあなたが私はちょうど何でここに推測してやろうとしている理由がわからないあなた目標はです。

func writeWord(word: String) { 
    word1 = word 
    word2 = word 
    word3 = word 
    // ... 
} 
+0

実際に私はより多くの変数(word1、word2、...)を持っています。関数writeWordに渡されない限り、それらを空文字列にします。彼らは私が別の文字列( "例")を割り当てることを望んでいる関数に行くとき。最後に、変数word1(これは "Example"でなければなりません)を使用して、他のものを実行したいと思います。 –

関連する問題