Ukraine has the right to return to all occupied territories and be reimbursed for all harm done by the invader. Help Ukraine to build fleet of Naval and Aerial drone with official President of Ukraine initiative ⇢ Ukraine has the right to return to all occupied territories and be reimbursed for all harm done by the invader. Help Ukraine to build fleet of Naval and Aerial drone with official Presid
結論(2021-07-06更新) 個人的なスタンス 個人的な意見として、原則 nullableのためにletを使うのみに留めたいところです。 そもそも、このような記事を書いて、それなりに閲覧されている程度には、スコープ関数は難しいからです。 JavaのAPIを使う場合、alsoやapplyが便利な場面があって、これは例外的に使ってもいいかもしれません。 が、スコープ関数を使わない素直なコードの選択肢を常に持っておくべきでしょう。 一応 スコープ関数の図解 --------以下、詳しく知りたい人向け-------- Kotlinの標準ライブラリには「スコープ関数」と呼ばれる4つの関数があります。 let、with、run、applyです。 それぞれ似ているので使い分けが難しいと思い、私なりの考えをまとめておきます。 (2017-01-26 追記) ver1.1で追加されるalsoについて解説
キャストや、型や変数の後ろにつける ! 記号、 ? 記号の意味についてのまとめです。 ? var b : String? = "abc" b = null 型宣言に付けた場合は nullable (Kotlin は明示的に ? を付けないと null を代入できない)。 var l = b?.length 変数に付けた場合は Safe Call(安全な呼び出し)。 b が null でない場合にのみ関数を実行し、b が null の場合は null を返す。 ?: val l = b?.length ?: -1 ?: の左側にくる式の値が null の場合は右側の値を返す。Elvis Operator。 ! ※ Kotlin コードを書いている際に直接使用することはありません。 Java コード呼び出し時の引数や返り値に型の後ろについていて、T! は T もしくは ? を表します。 例えば
はじめに Kotlin文法 - 分解宣言、範囲、型チェックとキャストの続き。 Kotlin ReferenceのOther章This expressions, Equality, Operator overloading, Null Safety, Exceptionsの大雑把日本語訳。適宜説明を変えたり端折ったり補足したりしている。 this 現在のレシーバを表すのに this を使う。 クラスのメンバの中で、this はそのクラスの現在のオブジェクトを指す。 拡張関数やレシーバ付き関数リテラルの中で、this はドットの左側として渡されるレシーバパラメータを表す。 this が他のスコープにあるものを指すならラベルを付ける必要がある。ラベルが付いていない素の this はスコープの最も内側にあるものを指す。 修飾されたthis class A { // 暗黙的に@Aラベル inner
Kotlin のコレクションの使い方についてのメモ。 Kotlin のコレクション Kotlin には標準ライブラリが用意されており、その中にコレクションも存在する。 特徴 Kotlin のコレクションは、「読み取り専用」と「書き込み可」のインターフェースが明確に分かれている。 listOf(), mapOf() など、関数でインスタンスを生成する。 Stream API に用意されているような filter() などのメソッドが、 Iterable などに定義されている。 コレクションの種類 List Map Set インターフェースの関係 kotlin.collections パッケージの下にある各インターフェースがどのような関係になっているのか、クラス図で表現した。 基本は JDK のコレクションと同じ構成だが、 MutableIterable など書き込み可能かどうかを区別するため
tl;dr Kotlinコードで定義したデフォルト値を使用した関数,コンストラクタをJavaコードで使う事を想定する場合には@JvmOverloadsアノテーションをつける @JvmOverloadsアノテーション Kotlinの関数やコンストラクタの宣言で、以下のようにデフォルト値を使うと class MyClass { fun myFunc(a: String = "", b: Int = 1, c: Boolean = true) {} } JavaからはMyClass#myFunc(String, int, boolean)のみ定義されているように見えます 変数b,cにはデフォルト値を使いつつMyClass#myFunc(String)の呼び出しを行いたいという場面では@JvmOverloadsアノテーションを使うことができます @JvmOverloads fun myFunc(a
kotlinにおける関数の定義方法。 これもDelphiっぽいけどDelphiの特殊な部分を普通に寄せた感じ。 今思えばDelphiの”関数内の最終評価値が関数の戻り値になる”動きはRubyに通じてるような。 関数の呼び出しに使ったスタックをどう解釈するかの違いだから似たパターンになるんだろう。 # kotlin fun getSquare(value: Int): Int { return value * value } println(getSquare(10)) // 100 # Delphi function getSquare(value: Integer): Integer begin result:= value * value end writeln(getSquare(10)); // 100 関数の定義において、引数の型を省略することはできない。 以下はN.G. fun
はじめに Kotlin文法 - 基本の続き。 Kotlin ReferenceのClasses and Objects章Classes and Inheritance, Properties and Fieldsの大雑把日本語訳。適宜説明を変えたり端折ったり補足したりしている。 objectについて まだ説明されてないのに object についての記述が出てくるので簡単に。Kotlinでは簡単に無名クラスのオブジェクトやシングルトンを作る仕組みがある。詳細はオブジェクトを参照。 // 無名クラスのオブジェクトを作る val ab = object : A(1), B { override val y = 15 } // シングルトン object DataProviderManager { fun registerDataProvider(provider: DataProvider) {
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く