回答編集履歴
18
answer
CHANGED
@@ -31,7 +31,8 @@
|
|
31
31
|
Kotlin では `android.database.sqlite.SQLiteOpenHelper`の中にある
|
32
32
|
+ getで始まる名前の無引数メソッド (Getter)
|
33
33
|
+ setで始まる名前の単一引数メソッド (Setter)
|
34
|
-
を、 Kotlin 側から 「先頭の ”set”/"get"を除いて、次の文字を小文字にした名前(=プロパティの形式)」でアクセスできるように、自動的に解釈します。
|
34
|
+
を、 Kotlin 側から 「先頭の ”set”/"get"を除いて、次の文字を小文字にした名前(=プロパティの形式)」でアクセスできるように、自動的に解釈します。
|
35
|
+
(この2点が冒頭で言及した「**一定の規約**」の一部です)
|
35
36
|
|
36
37
|
これにより、
|
37
38
|
`.writableDatabase` という「プロパティ形式の記法」で、`getWritableDatabase()` という Getter メソッドを呼び出せます。
|
17
answer
CHANGED
@@ -41,7 +41,9 @@
|
|
41
41
|
isEnabled(bool) -> setEnabled
|
42
42
|
も同じことです。
|
43
43
|
|
44
|
+
上記公式ドキュメントの引用後半
|
44
|
-
|
45
|
+
> Bool 値のアクセサーメソッド(Getter 名が is で始まり、Setter 名が set で始まる)は、Getter メソッドと同じ名前を持つプロパティとして表現されます。
|
46
|
+
の部分がまさにこれです。
|
45
47
|
(button のクラスに、`isEnabled()` という Getter があるはず)
|
46
48
|
|
47
49
|
---
|
16
answer
CHANGED
@@ -46,7 +46,7 @@
|
|
46
46
|
|
47
47
|
---
|
48
48
|
|
49
|
-
Java のように「すべてを明示的に定義するプログラミング言語」に慣れている方からすると、このような
|
49
|
+
Java のように「すべてを明示的に定義するプログラミング言語」に慣れている方からすると、このような仕様は不思議に感じるかもしれませんが、結果として、Kotlin の別の仕様である、自動 Getter/Setter との一貫性や、コード記述量の削減に貢献するものとなっています。
|
50
50
|
|
51
51
|
|
52
52
|
--
|
15
answer
CHANGED
@@ -34,7 +34,7 @@
|
|
34
34
|
を、 Kotlin 側から 「先頭の ”set”/"get"を除いて、次の文字を小文字にした名前(=プロパティの形式)」でアクセスできるように、自動的に解釈します。(この2点が冒頭で言及した「**一定の規約**」の一部です)
|
35
35
|
|
36
36
|
これにより、
|
37
|
-
writableDatabase
|
37
|
+
`.writableDatabase` という「プロパティ形式の記法」で、`getWritableDatabase()` という Getter メソッドを呼び出せます。
|
38
38
|
|
39
39
|
|
40
40
|
---
|
14
answer
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
> なぜ「メソッドの実行結果」に「プロパティにアクセスする記述」でアクセスできるのか
|
2
2
|
|
3
|
-
Kotilin から、 Java で書かれたコード中にある、**一定の規約**に従ったメソッドを呼ぶ場合、そのよう
|
3
|
+
Kotilin から、 Java で書かれたコード中にある、**一定の規約**に従ったメソッドを呼ぶ場合、そのようにできる仕様になっているからです。
|
4
4
|
|
5
5
|
https://kotlinlang.org/docs/java-interop.html#getters-and-setters
|
6
6
|
|
13
answer
CHANGED
@@ -46,7 +46,7 @@
|
|
46
46
|
|
47
47
|
---
|
48
48
|
|
49
|
-
Java のように「すべてを明示的に定義するプログラミング言語」に慣れている方からすると、このような挙動はな
|
49
|
+
Java のように「すべてを明示的に定義するプログラミング言語」に慣れている方からすると、このような挙動は慣れないかもしれませんが、結果として、Kotlin の別の仕様である、自動 Getter/Setter との一貫性や、コード記述量の削減に貢献する仕様となっています。
|
50
50
|
|
51
51
|
|
52
52
|
--
|
12
answer
CHANGED
@@ -16,16 +16,18 @@
|
|
16
16
|
```kt
|
17
17
|
val db = _helper.writableDatabase
|
18
18
|
```
|
19
|
+
の `_helper` は、`DatabaseHelper` オブジェクトですが (質問文のコードの2行目)、
|
20
|
+
`DatabaseHelper` オブジェクトは `SQLiteOpenHelper` を継承しているはずです。
|
21
|
+
|
19
|
-
|
22
|
+
そして、`SQLiteOpenHelper` は、
|
20
|
-
冒頭に
|
21
23
|
```kt
|
22
24
|
import android.database.sqlite.SQLiteOpenHelper
|
23
25
|
```
|
24
|
-
というインポート文
|
26
|
+
というインポート文によってインポートされているはずです。
|
25
|
-
|
27
|
+
|
26
28
|
実はこの`android.database.sqlite.SQLiteOpenHelper`
|
27
29
|
というパッケージは、**Java で書かれています**。
|
28
|
-
|
30
|
+
|
29
31
|
Kotlin では `android.database.sqlite.SQLiteOpenHelper`の中にある
|
30
32
|
+ getで始まる名前の無引数メソッド (Getter)
|
31
33
|
+ setで始まる名前の単一引数メソッド (Setter)
|
@@ -33,16 +35,17 @@
|
|
33
35
|
|
34
36
|
これにより、
|
35
37
|
writableDatabase(プロパティ形式) という書き方で、getWritableDatabalse(Getter形式)を呼び出せます。
|
38
|
+
|
36
39
|
|
37
|
-
|
38
40
|
---
|
39
41
|
isEnabled(bool) -> setEnabled
|
40
42
|
も同じことです。
|
41
|
-
|
43
|
+
|
42
44
|
上記公式ドキュメントの引用後半「(Getter 名が is で始まり、Setter 名が set で始まる)は、Getter メソッドと同じ名前を持つプロパティとして表現されます。」の部分がまさにこれです。
|
45
|
+
(button のクラスに、`isEnabled()` という Getter があるはず)
|
43
46
|
|
44
47
|
---
|
45
|
-
|
48
|
+
|
46
49
|
Java のように「すべてを明示的に定義するプログラミング言語」に慣れている方からすると、このような挙動はなじまないかもしれませんが、結果として、Kotlin の別の仕様である、自動 Getter/Setter との一貫性や、コード記述量の削減に貢献する仕様となっています。
|
47
50
|
|
48
51
|
|
11
answer
CHANGED
@@ -43,7 +43,7 @@
|
|
43
43
|
|
44
44
|
---
|
45
45
|
|
46
|
-
Java のように「すべてを明示的に定義するプログラミング言語」に慣れている方からすると、このような挙動はなじまないかもしれませんが、結果としてコード
|
46
|
+
Java のように「すべてを明示的に定義するプログラミング言語」に慣れている方からすると、このような挙動はなじまないかもしれませんが、結果として、Kotlin の別の仕様である、自動 Getter/Setter との一貫性や、コード記述量の削減に貢献する仕様となっています。
|
47
47
|
|
48
48
|
|
49
49
|
--
|
10
answer
CHANGED
@@ -48,4 +48,4 @@
|
|
48
48
|
|
49
49
|
--
|
50
50
|
この回答をするにあたって参考にした資料:
|
51
|
-
[
|
51
|
+
[Kotlinの言語リファレンス](https://kotlinlang.org/docs/)
|
9
answer
CHANGED
@@ -29,14 +29,14 @@
|
|
29
29
|
Kotlin では `android.database.sqlite.SQLiteOpenHelper`の中にある
|
30
30
|
+ getで始まる名前の無引数メソッド (Getter)
|
31
31
|
+ setで始まる名前の単一引数メソッド (Setter)
|
32
|
-
を、 Kotlin 側から 「先頭の ”set”/"get"を除いて、次の文字を小文字にした名前(=プロパティの形式)」でアクセスできるように、自動的に解釈します。(この2点が冒頭で言及した「**一定の規約**」
|
32
|
+
を、 Kotlin 側から 「先頭の ”set”/"get"を除いて、次の文字を小文字にした名前(=プロパティの形式)」でアクセスできるように、自動的に解釈します。(この2点が冒頭で言及した「**一定の規約**」の一部です)
|
33
33
|
|
34
34
|
これにより、
|
35
|
-
writableDatabase(プロパティ形式)
|
35
|
+
writableDatabase(プロパティ形式) という書き方で、getWritableDatabalse(Getter形式)を呼び出せます。
|
36
|
-
が相互に結びつきます。
|
37
36
|
|
37
|
+
|
38
38
|
---
|
39
|
-
isEnabled(bool)
|
39
|
+
isEnabled(bool) -> setEnabled
|
40
40
|
も同じことです。
|
41
41
|
|
42
42
|
上記公式ドキュメントの引用後半「(Getter 名が is で始まり、Setter 名が set で始まる)は、Getter メソッドと同じ名前を持つプロパティとして表現されます。」の部分がまさにこれです。
|
8
answer
CHANGED
@@ -26,7 +26,7 @@
|
|
26
26
|
実はこの`android.database.sqlite.SQLiteOpenHelper`
|
27
27
|
というパッケージは、**Java で書かれています**。
|
28
28
|
|
29
|
-
Kotlin は
|
29
|
+
Kotlin では `android.database.sqlite.SQLiteOpenHelper`の中にある
|
30
30
|
+ getで始まる名前の無引数メソッド (Getter)
|
31
31
|
+ setで始まる名前の単一引数メソッド (Setter)
|
32
32
|
を、 Kotlin 側から 「先頭の ”set”/"get"を除いて、次の文字を小文字にした名前(=プロパティの形式)」でアクセスできるように、自動的に解釈します。(この2点が冒頭で言及した「**一定の規約**」と呼ばれるものです)
|
7
answer
CHANGED
@@ -43,7 +43,7 @@
|
|
43
43
|
|
44
44
|
---
|
45
45
|
|
46
|
-
Java のように「すべてを明示的に定義するプログラミング言語」に慣れている方からすると、このような挙動はなじまないかもしれませんが、結果として
|
46
|
+
Java のように「すべてを明示的に定義するプログラミング言語」に慣れている方からすると、このような挙動はなじまないかもしれませんが、結果としてコード作成省力化に貢献する仕様となっています。
|
47
47
|
|
48
48
|
|
49
49
|
--
|
6
answer
CHANGED
@@ -13,12 +13,12 @@
|
|
13
13
|
---
|
14
14
|
|
15
15
|
これを質問者さんの例にあてはめると
|
16
|
-
```
|
16
|
+
```kt
|
17
17
|
val db = _helper.writableDatabase
|
18
18
|
```
|
19
19
|
というコードが書かれてある Kotlinファイルには、
|
20
20
|
冒頭に
|
21
|
-
```
|
21
|
+
```kt
|
22
22
|
import android.database.sqlite.SQLiteOpenHelper
|
23
23
|
```
|
24
24
|
というインポート文が書かれてあるはずです。
|
5
answer
CHANGED
@@ -36,12 +36,10 @@
|
|
36
36
|
が相互に結びつきます。
|
37
37
|
|
38
38
|
---
|
39
|
-
|
39
|
+
isEnabled(bool) <-> setEnabled
|
40
40
|
も同じことです。
|
41
41
|
|
42
|
-
上記公式ドキュメントの引用の後半
|
43
|
-
「(Getter 名が is で始まり、Setter 名が set で始まる)は、Getter メソッドと同じ名前を持つプロパティとして表現されます。」
|
42
|
+
上記公式ドキュメントの引用後半「(Getter 名が is で始まり、Setter 名が set で始まる)は、Getter メソッドと同じ名前を持つプロパティとして表現されます。」の部分がまさにこれです。
|
44
|
-
がまさにこれです。
|
45
43
|
|
46
44
|
---
|
47
45
|
|
4
answer
CHANGED
@@ -29,7 +29,7 @@
|
|
29
29
|
Kotlin は インポート時に `android.database.sqlite.SQLiteOpenHelper`の中にある
|
30
30
|
+ getで始まる名前の無引数メソッド (Getter)
|
31
31
|
+ setで始まる名前の単一引数メソッド (Setter)
|
32
|
-
を、 Kotlin 側から 「先頭の ”set”/"get"を除いて、次の文字を小文字にした名前(=プロパティの形式)」でアクセスできるように、自動的に解釈します。(
|
32
|
+
を、 Kotlin 側から 「先頭の ”set”/"get"を除いて、次の文字を小文字にした名前(=プロパティの形式)」でアクセスできるように、自動的に解釈します。(この2点が冒頭で言及した「**一定の規約**」と呼ばれるものです)
|
33
33
|
|
34
34
|
これにより、
|
35
35
|
writableDatabase(プロパティ形式) <-> getWritableDatabalse(Getter形式)
|
@@ -45,5 +45,9 @@
|
|
45
45
|
|
46
46
|
---
|
47
47
|
|
48
|
+
Java のように「すべてを明示的に定義するプログラミング言語」に慣れている方からすると、このような挙動はなじまないかもしれませんが、結果としてバグの軽減やコード作成省力化に貢献する仕様となっています。
|
49
|
+
|
50
|
+
|
51
|
+
--
|
48
52
|
この回答をするにあたって参考にした資料:
|
49
53
|
[kotlinの言語リファレンス](https://kotlinlang.org/docs/)
|
3
answer
CHANGED
@@ -27,12 +27,12 @@
|
|
27
27
|
というパッケージは、**Java で書かれています**。
|
28
28
|
|
29
29
|
Kotlin は インポート時に `android.database.sqlite.SQLiteOpenHelper`の中にある
|
30
|
-
+ getで始まる名前の無引数メソッド
|
30
|
+
+ getで始まる名前の無引数メソッド (Getter)
|
31
|
-
+ setで始まる名前の単一引数メソッド
|
31
|
+
+ setで始まる名前の単一引数メソッド (Setter)
|
32
|
-
を、 Kotlin 側から 「先頭の ”set”/"get"を除いて、次の文字を小文字にした名前」でアクセスできるように、自動的に解釈します。(上の2つが冒頭で言及した「一定の規約」です)
|
32
|
+
を、 Kotlin 側から 「先頭の ”set”/"get"を除いて、次の文字を小文字にした名前(=プロパティの形式)」でアクセスできるように、自動的に解釈します。(上の2つが冒頭で言及した「一定の規約」です)
|
33
33
|
|
34
34
|
これにより、
|
35
|
-
writableDatabase <-> getWritableDatabalse
|
35
|
+
writableDatabase(プロパティ形式) <-> getWritableDatabalse(Getter形式)
|
36
36
|
が相互に結びつきます。
|
37
37
|
|
38
38
|
---
|
2
answer
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
https://kotlinlang.org/docs/java-interop.html#getters-and-setters
|
6
6
|
|
7
|
-
>
|
7
|
+
> Methods that follow the Java conventions for getters and setters (no-argument methods with names starting with get and single-argument methods with names starting with set) are represented as properties in Kotlin. Boolean accessor methods (where the name of the getter starts with is and the name of the setter starts with set) are represented as properties which have the same name as the getter method.
|
8
8
|
|
9
9
|
(訳)
|
10
10
|
> JavaのGetterとSetterの規約に従ったメソッド(getで始まる名前の無引数メソッドとsetで始まる名前の単一引数メソッド)は、Kotlinではプロパティとして表現されます。
|
@@ -26,10 +26,10 @@
|
|
26
26
|
実はこの`android.database.sqlite.SQLiteOpenHelper`
|
27
27
|
というパッケージは、**Java で書かれています**。
|
28
28
|
|
29
|
-
|
29
|
+
Kotlin は インポート時に `android.database.sqlite.SQLiteOpenHelper`の中にある
|
30
30
|
+ getで始まる名前の無引数メソッド
|
31
31
|
+ setで始まる名前の単一引数メソッド
|
32
|
-
を、
|
32
|
+
を、 Kotlin 側から 「先頭の ”set”/"get"を除いて、次の文字を小文字にした名前」でアクセスできるように、自動的に解釈します。(上の2つが冒頭で言及した「一定の規約」です)
|
33
33
|
|
34
34
|
これにより、
|
35
35
|
writableDatabase <-> getWritableDatabalse
|
1
answer
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
> なぜ「メソッドの実行結果」に「プロパティにアクセスする記述」でアクセスできるのか
|
2
2
|
|
3
|
-
Kotilin から Java
|
3
|
+
Kotilin から、 Java で書かれたコード中にある、**一定の規約**に従ったメソッドを呼ぶ場合、そのような挙動を行う仕様になっているからです。
|
4
4
|
|
5
5
|
https://kotlinlang.org/docs/java-interop.html#getters-and-setters
|
6
6
|
|