答えて
Kotlinでは、関数引数はval
として扱われます。つまり、参照を「変更」するために、関数内で何かをしなければならないということです。
あなたのソリューションはうまくいくが、私は変数をシャドーするのは悪い習慣だと感じている。それは混乱につながり、効果が機能に局所的であることを理解している意図をかなり正確にはカバーしていません。私はこのようなものとなるだろう
:
fun test(i: Int) {
var i2 = i
i2 += 3 // etc...
}
私はそれを考えましたが、私の場合、パラメータ名は幅と高さです。 と私はそれが読みにくいコードにつながるだろう名前を変更すると感じる。 – humazed
私が見つけた唯一の解決策は、名前シャドウイングを使用することです。つまり、そのようなものです。
fun test(i: Int) {
var i = i
i += 5
}
私はそれが正しい感じていないので最善の解決策場合は、さえのIntelliJ IDEAはそれについて私に警告しているかわかりません。
私は
fun test(var i: Int) {
i += 5
}
のような不思議な事を期待していたが、unfortuantlyこれはcomileさえしません。
興味深いことに、Kotlinは変数名を重複して変数を定義することができます。多分それはバグです。 +1 –
いいえ、それは悪い習慣です。 – humazed
ありがとう、私はそれを得た。 Javaではシャドウ変数を定義することはできません。実際には、Kotlinはそのために別のローカル変数を定義しました。たとえば、var i:String = "foo" 'など、ローカル変数の型を変更することもできます。 –
- 1. redux-formを機能コンポーネントと再利用しようとしています
- 2. 再使用したJavaジェネリックコレクションは、私が書いたJavaのジェネリックコレクションを再利用しようとしている
- 3. WPFウィンドウを再利用しようとしている
- 4. エラー再利用可能なヘッダを設定する:「私は、再利用可能なヘッダーを使用するように私のコードを変更しようとしていますし、それがここviewForHeaderInSection にクラッシュしているバンドル
- 5. CallBacksを使用してAJAXポスト機能を再利用する
- 6. 私は、ユニオンを使用して、ピボットし、機能を利用しようとしました
- 7. angularjsの再利用機能
- 8. $( '#リスト')jqgridは、私がjqgridを使用しようとしていると私は、このエラーまし機能
- 9. Vue.jsの再利用可能なインクリメント機能とデクリメント機能
- 10. tf.variable_scopeの再利用オプションはどのように機能しますか?
- 11. Javascriptの機能を再利用する
- 12. は、私は私がDreamweaverのCS5を使用して、ロード機能を実行しようとしてい
- 13. amChartsのzoomToDates機能は、私がamChartsガントプロットの描画にzoomToDates機能を使用しようとしている権利
- 14. 私はエクスプレスのres.send()機能を使用しようとしているが、私はasync.eachを使用していることを考えるよasync.each
- 15. どのような新しいブラウザ機能が利用可能ですか?
- 16. AntLR4:私は機能を構築しようとしてきた機能
- 17. サイズ変更可能なJButtonを使用してコンパクトグリッドを作成する方法は?私はスイングを再利用しようとしています
- 18. バックボーン_.chain(...)私は_chain使用しようとしていますが、私は持って機能
- 19. 変数名を再利用するとき、テンプレート参照変数はどのように機能しますか?
- 20. symfonyはサービスのように、再利用可能なバンドルを呼び出して、私はウェブストアアプリケーションでバスケットを管理するための再利用可能なバンドルを作成しようとしている
- 21. とValueError:RNNCellを再利用しようとすると - tensorflowにループ
- 22. jQueryの関数は、私はを再利用することができます機能を作りたい
- 23. はネイティブ私はonSubmitPressedさonpres機能を実行しようとしている
- 24. AngularJSボタンクリックは、私はこれを変更しようとしている機能
- 25. Laravelでコントローラの機能を使用してコンポーネントを再利用する方法
- 26. は私がイメージしてページング機能を実行しよう
- 27. gulp.js - dest.onは私がコンパイルしようとしています機能
- 28. oracleDB再利用機能付きノードJS
- 29. 再利用、既存の機能
- 30. Javascript再利用機能の約束
は本当に、それは通常の引数を変更するための悪い習慣と考えられています。別の名前の新しい変数を作成し、それをパラメータに代入してから使用します。また、パラメータを 'var'として宣言できますか? – Carcigenicate
@Carcigenicate Kotlinで関数のパラメータをval/varとして指定することはできません。これらは 'val'であることが暗示されています。 – Todd
なぜそれは悪い習慣と考えられているのですか?それを割り当てるのを避けるために、外側のスコープのパラメータを変更したくありません。私は代入がもっと混乱していると思います。 – humazed