Kotlin 3

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/03/19(月) 04:26:26.03ID:GqsfT9Tb
JetBrainsが開発した期待の新言語Kotlinについて語りましょう
https://kotlinlang.org

前スレ
Kotlin 2
https://mevius.5ch.net/test/read.cgi/tech/1509462463/
2018/06/25(月) 12:17:54.99ID:VJwqAc5V
BASICはnul安全
2018/06/26(火) 06:08:18.39ID:2T7FQdCl
KotlinのターゲットJVMは、Java8の次はOracleJDK 11になるんだろうか、OpenJDK 11になるんだろうか。
2018/06/26(火) 08:30:26.76ID:T66Du/32
Jetbrainオリジナルのkdkになるよ
2018/06/26(火) 09:17:28.24ID:j47hmKh+
そんなん作ってくれるならそれはそれで助かる
2018/06/26(火) 09:36:33.84ID:DwsAXqqT
絶対に必要なのはJVMでJDKは要らなくする方向になるんだろな
2018/06/26(火) 15:19:07.75ID:Pch/7s9D
nativeはやく整備しよ?
jetbrainとgoogle様ならわけないっしょ?
2018/06/26(火) 15:46:55.60ID:JaGjn0N8
nativeっておもちゃとしては楽しいだろうけど、現実的にそこまでニーズあるかね
2018/06/26(火) 18:39:53.31ID:94ok3+r+
明日JBの中の人が来日してkotlinイベントあるね
何か面白い話聞けるかな
673デフォルトの名無しさん
垢版 |
2018/06/26(火) 19:48:16.67ID:EJ9QuCpH
>>671
まずはおもちゃとして使って楽しんで、それから何かに使えないか考えれば良いのではないかな。
その内なにか丁度良い用途が見つかると思うよ。
2018/06/26(火) 21:43:33.91ID:94ok3+r+
趣味で何か作るなら是非使いたいね。
ビジネスプロダクトを作るならまたちょっと話が変わるけど。
2018/06/27(水) 07:38:02.49ID:6utZ2/C2
クロスプラットフォームって、出始めの頃のhtmlベースのそび糞達のせいで普及が5年は遅れてると思う。
いまだにあの頃のイメージは抜けきれてない
2018/06/27(水) 08:32:56.41ID:mCGbxVOO
Kotlinを選ぶ時点で、既に自分の得意な特定の言語に固執する低レベルな段階を卒業してる人が多いだろうから
無理にKotlin使うよりプラットフォームに合わせた適切な言語を使うべきと考える人が多数派だろうね
2018/06/27(水) 08:41:17.54ID:EhxoKQAq
うちもいくつかアプリ作ってるけど、結局それぞれのネイティブで並行開発が1番間違いないって感じになってるな。
Xamarin使ってるのもあるけど、やっぱり色々辛い。RNはもっとアレだったからプロダクトに使う前にやめた。
2018/06/27(水) 08:44:02.48ID:eZ/QptdS
そうそう
クロスPFなんてもうunityくらいしか使われていない
2018/06/27(水) 09:01:55.92ID:tEiv7Ngd
Xamarin程の糞はない
2018/06/27(水) 10:28:55.92ID:WNG+0R1n
>>678
Unityって触ったことないけど、ゲーム以外にも使えんの?
2018/06/27(水) 10:31:24.77ID:Ei1nEpEL
使えない
2018/06/27(水) 12:18:58.79ID:+kJys0PI
単純にプラットフォームのバージョンアップに加えて、Xamarinの更新や仕様変更にもついていかなくちゃいけないのが割と大きいんだよね。
レイヤーが1枚増えるぶんこちらの意思とは無関係にメンテしなくちゃいけないものが増える。
2018/06/27(水) 18:40:46.48ID:joyJ67qD
ネイティブでクロスコンパイルだとgoがいい感じなんだがいかんせん言語仕様がアレじゃん?
rustもつらみが深いし。
kotlinがそこ狙ってくれないかなー
2018/06/27(水) 19:00:28.69ID:FvMz1kHT
Googleがgo諦めてKotlin推しになったんだと思ってるんだが
2018/06/27(水) 19:40:54.39ID:qKnsPtkx
Google的にはTypeScriptとPWAでしょ
2018/06/27(水) 20:31:33.36ID:9CxCJ+s3
GoはGoogleAppEngineとセットで推されてる感じ
Dartはモバイルアプリに使えるようになったけど、PWAにも対応されるのかな
2018/06/27(水) 21:31:14.11ID:/7xWx8r1
Google A 「KotlinはAndroid開発の第一級言語」
Google B 「Dartならクロスプラットフォーム開発出来るよ」
Google C 「社内ではTypeScriptが標準開発言語ですけどね」
Google D 「Goはさらに進化する」
2018/06/27(水) 21:47:53.30ID:UhwNkHWJ
Googleも一枚岩ではないからな
2018/06/27(水) 21:54:44.06ID:058nb6Zd
そういうカオスなのがGoogleっぽくて嫌いじゃない
Googleはインド系
Appleは中国系
2018/06/27(水) 22:06:52.35ID:M3lpNFO8
Google的にはWebAssemblyはどの言語なんだろ
Kotlin/Nativeを推してくれたりしないものか
2018/06/27(水) 22:36:51.97ID:09Lu5AaC
GoogleはSEO最強だからどんなものでもそれなりに凄いもののように見えるけど、
実際にはGoogle自身も全く本気でやってないお遊びレベルのゴミが多いでしょ
Googleって社内的には非常に一貫性の高い独自のプラットフォームがあって、世間のOSSベースな開発とはかけ離れた世界になってるらしいし
692デフォルトの名無しさん
垢版 |
2018/06/28(木) 05:21:24.48ID:lL281Rpl
ソースは?
2018/06/28(木) 08:16:52.30ID:1UW06GNd
googleのソースリポジトリへのコミット要件が割と厳し目なのは有名かな。
その割にgithubにあげてるのはそもそもまともに動かないものもたまにある。
2018/06/28(木) 11:23:25.80ID:m6ikkjV1
>>692
オリバーかイカリ使ってる
2018/06/30(土) 20:53:17.24ID:eWG25u0M
この前のHadi Haririのイベント行った奴いないの?
2018/07/01(日) 08:01:17.25ID:/DvFOeR7
すみません、どちらに質問させて頂けるのか分からなくてこちらで教えていただければと考えてます。よろしくお願いします。
697696
垢版 |
2018/07/01(日) 08:15:08.30ID:/DvFOeR7
1 fun func(x:int,y:(Int)->Int)=L(x)
2 func(1,{it*5})

1行目のL(x)は何を意味しているのでしょうか?
また、var y:(Int)->Int={x:Int->x*2}をfunc関数に代入するために
1行目にy:(Int)->Intを引数にして
2行目で、{x:Int->x*2}を実行しているという理解でいいのでしょうか?
2018/07/01(日) 08:18:15.23ID:nOlX7v2j
>>681
Unityの「だってお前らこれではゲームしか作らんだろ」という割り切りっぷりは清々しい
ゲーム的文法で作る以外のルートがねえw
2018/07/01(日) 10:29:25.00ID:7m3QggRW
>>697
1行目はLという名前の関数にxを渡してるだけ
 fun func(x:int, y:(Int)->Int) {
   return L(x)
 }
の省略表記
ただ、引数のyが無視されているので
L(x) じゃなくて y(x) の間違いなんじゃねって気がする

2行目は代入云々はその理解で合ってるけど
「実行している」のではなく「定義して渡している」
実際そのコードではyが呼ばれてないのでその掛け算は実行されない
2018/07/01(日) 16:20:40.37ID:nicbhK38
なんで、宣言のとき型と変数名逆にしたんだろうなあ、苛つくわあ
2018/07/01(日) 16:23:38.80ID:nOlX7v2j
>>700
省略したいときウルトラ面倒になるのでやりたくなかったのだろう
2018/07/01(日) 16:58:23.83ID:nicbhK38
val 人間:文字列=山田

気持ち悪いわあ
2018/07/01(日) 18:15:00.04ID:kOaBFF1V
>>700
型が省略されてるものとされないものが混在したら可読性ウンコになるだろ
2018/07/01(日) 19:41:23.70ID:zdyprq44
以前はPASCAL, ML, Haskell、最近なら Scala, Go もこういう形で、
「型 変数」っていう順序のCスタイルの方が本来異色なんだけど。
2018/07/01(日) 20:18:17.04ID:dWb7F20p
>>703

val a=0
int b=1
みたいな感じじゃだめだったのか気になる
2018/07/01(日) 20:49:55.44ID:8aTW58+O
val name : String = " 名前"
" String "に代入してる感覚があるから、わかりにくのは事実だわなw
2018/07/01(日) 20:53:31.14ID:dWb7F20p
>>706
これよこれ
Aをhogeという型で代入
hogeという型のAに代入
好みかな…
2018/07/01(日) 21:01:29.33ID:kOaBFF1V
>>705
それだと
val int a = 0
val b = 1
になるやん
2018/07/01(日) 21:31:28.10ID:sOb0a/fB
文芸的プログラミングというやつで、
val name: String
はname of Stringと見えるから英語の順序的にはこのほうが自然
2018/07/01(日) 21:38:16.02ID:nOlX7v2j
てゆーか>>702の例の時点でさくっと英語理屈を出してあげたほうが混乱がなかったと思う
じゃあなんでC族がそうなってないかって?
Cだからそんな面倒なことしねーんだよお前側が機械に合わせろw
2018/07/01(日) 22:01:00.11ID:q7RVjG2e
日本語話者の一般的な認知様式は
鳥の模型>模型の鳥
名前を表す文字列>文字列で表された名前
だし、日本語でも 変数名:型 の方が言語的には自然では
2018/07/01(日) 22:20:03.34ID:InQHnS3f
数字の n は 42
文字列の s は "42"
2018/07/01(日) 22:26:56.25ID:nicbhK38
言葉的にはそうかもしれないが
抽象度の順じゃないつうのがねー
これがモヤっとする原因

哺乳類>人間>山田
2018/07/01(日) 22:31:27.77ID:R8XGd50K
>>713
うるせーそれが仕様だ
慣れろバカ
2018/07/01(日) 22:50:43.53ID:q7RVjG2e
>>712
それも大抵の日本人は
nは数字の42
sは文字列の"42"
と表現すると思うよ
2018/07/01(日) 22:55:24.40ID:+8z4/crF
単純に慣れだと思うんだけどなぁ
コード読むときに
>>712
>>714
みたいな考えいちいち経由しないでしょ
2018/07/01(日) 23:01:37.60ID:8aTW58+O
kotlinの基本に慣れる為に

val name : String = " 名前"

"定数"の"name"には"String型"の"値"を入れる

と言う解釈がすんなり行けるかな
2018/07/01(日) 23:08:56.02ID:raAwvdUY
val name: String = "..."

"name" is a string: "John Smith"
「名前」は文字列、"山田花子"

打ってる時はだいたいこういう感じの思考の流れがある
2018/07/01(日) 23:19:27.43ID:CPfYnrTw
>>717
define a variable "name" as a string and assign a value "名前" to it って読むんだよそれ
2018/07/01(日) 23:20:47.61ID:InQHnS3f
valなのにvariable wwwww
721デフォルトの名無しさん
垢版 |
2018/07/01(日) 23:27:05.41ID:yaDvqYhr
昔々PascalというかDelphiをよく使っていたので変数名、形の順でも違和感なし。
Oracle の PL/SQL も確かそうだったな。

Cも昔からよく使ってるけどね。Javaは趣味で使う程度かな。
722デフォルトの名無しさん
垢版 |
2018/07/01(日) 23:30:37.32ID:yaDvqYhr
そういやKotlinは val a, b, c : Int みたいに書いてまとめて宣言できないんだっけ?できた?
2018/07/02(月) 00:28:48.57ID:QmQNg+H0
>>708
javaとかこんなんじゃなかったっけ
2018/07/02(月) 00:29:30.51ID:QmQNg+H0
>>708
>>705のことね
2018/07/02(月) 02:31:32.49ID:oF5BHAcS
変数名とコロンの間にスペース入れるのは規約違反?
726デフォルトの名無しさん
垢版 |
2018/07/02(月) 04:08:17.17ID:M/CoMLX8
>>725
エラー出ないから言語としては良いのでは?

関係ないが>>722で書いたやつは試したらダメだった。
2018/07/02(月) 10:54:34.73ID:sDkOSnE9
>>725
IntelliJのCode Style設定ではどちらも選べるようになってるから、どちらでもいいんでない
2018/07/02(月) 12:07:35.37ID:eli6Ofbc
>>726,727
そーなのか
なんとなく型はスペース無しで継承はスペース有りかと
ありがとりん
2018/07/02(月) 15:54:18.89ID:fF3oZnn5
そうそう型と継承が同じ記法だからごちゃごちゃするよな
どうせならすべて動的型付けにすればよかったのに
730デフォルトの名無しさん
垢版 |
2018/07/02(月) 16:24:41.26ID:6MU/ELtX
動的型付けだと、存在意義全否定だろ。
Groovyでも使っとけ。
2018/07/02(月) 20:41:56.60ID:nCi8FeLN
型推論と動的型付けを混同すんなよ
2018/07/02(月) 21:15:16.60ID:BzTTxziN
>>699
お礼が遅れてすみません。
仰る通り、記載ミスで、y(x)です。

ご解説ありがとうございます。
すっきりしました。ありがとうございます。
2018/07/02(月) 21:24:23.77ID:EvLqbtyu
>>732
うむ。精進なされよ。
2018/07/02(月) 23:00:47.89ID://b/At4I
慣れたら型が後の方が可読性高く感じる
それと構文解析しやすくなるのもあるんじゃね

Kotlinでの
 (T1,T2)->R
はJavaでは
 BiFunction<T1,T2,R>

型が先だと関数型(function type)が他の構文と衝突しないよう識別子やジェネリクス型を置くことになる
2018/07/03(火) 00:00:46.54ID:GdB7bYPq
(TT^TT)
2018/07/03(火) 00:39:55.52ID:TIu9/k2l
関数の返値の変数の型も指定できるから、そっちのほうはわかりやすいんじゃないかな

fun hoge(): String = "ぬるぽ"

関数型プログラミングだと、そういう形式のほうがわかりやすいんじゃないかと思う

val hoge: () -> String = fun(): String = "ぬるぽ"
2018/07/03(火) 09:23:57.08ID:5ohzf/bH
>>736
ガッ
738デフォルトの名無しさん
垢版 |
2018/07/03(火) 10:05:34.13ID:2Hrfam1D
慣れの問題じゃなあかなあ
739デフォルトの名無しさん
垢版 |
2018/07/03(火) 10:06:19.13ID:2Hrfam1D
うう。スマホのフリック入力で失敗した。
2018/07/03(火) 10:07:52.88ID:ng0Ex9q0
>>738
人間歳をとると新しいものに慣れるのに時間がかかるようになる
そしてこのスレはおっさんのすくつだ
2018/07/03(火) 10:19:34.86ID:lMsOY+nb
このスレの人たち、今だにガラケー使ってそうだな
いつまで慣れの問題でギャーギャー言ってんだよ
2018/07/03(火) 10:40:19.23ID:pQbF/VH/
>>739
「い」の入力失敗率はあじょう。
人間工学的におかしあ。
あちばん遠あからな。
2018/07/03(火) 11:32:14.53ID:jh9a6Llj
>>741
幸か不幸かどこぞの板と違って末尾で判断できない
2018/07/03(火) 15:12:48.33ID:k8WNCQ/C
kotlinのコロン( : )ってどんな働き・役割なのですか?
2018/07/03(火) 15:56:30.11ID:k8WNCQ/C
もう一つ質問させてください

1. class chiba{ }
2. class chiba(){ ]
3. class chiba(city:String="--"){ }

1はコンストラクタは持たない
2は自動でパラメータのないコンストラクタが生成される
3は( )内でパラメータを初期化し{ }がコンストラクタになる
という理解でいいのでしょうか?
2018/07/03(火) 16:38:20.61ID:h4wqJ0lA
>>744
単独では何の働きも役割もない
ただの区切り文字
2018/07/03(火) 20:19:53.43ID:rBmEiF9u
>>745
以下4行は同一、下に行くほど省略表記なだけ
コンストラクタは自動的に作られる

class chiba constructor() { }
class chiba() { }
class chiba { }
class chiba

コンストラクタ(プライマリコンストラクタ)の中身は
初期化ブロック( init{...} )とインスタンス変数の初期化

具体的にコードで
https://ideone.com/KpwsQl

リファレンス
https://kotlinlang.org/docs/reference/classes.html
2018/07/03(火) 20:54:14.27ID:ODNzvHJa
ObservableFieldの説明を見ていたら、
https://developer.android.com/reference/android/databinding/ObservableField

public final ObservableField<String> first = new ObservableField<String>();
public final ObservableField<String> last = new ObservableField<String>();
public final ObservableField<String> display = new ObservableField<String>(first, last) {
    @Override
    public String get() {
        return context.getResources().getString(R.string.name, first.get, last.get());
    }
};

既存のObservableFieldを組み合わせて新しいObservableFieldを作るようなコードが載っているので、
そのままコピペして試してみたんですが、コンパイルが通らないんですがどうしたらいいですか
2018/07/03(火) 21:10:49.57ID:egr/fzRr
>>748
コンパイルエラーのエラーメッセージを読む
2018/07/03(火) 21:13:11.08ID:b3yF7W7d
それJavaじゃん
Kotlinで書く
2018/07/03(火) 21:34:21.57ID:ODNzvHJa
Kotlinに変換しても同じだった
エラーメッセージは以下だが、何を治したらいいのか
Cannot resolve constructor 'ObservableField(...)'
752デフォルトの名無しさん
垢版 |
2018/07/04(水) 04:50:43.63ID:deFmQ17L
スレ違いの
2018/07/04(水) 04:54:54.94ID:/r54tfMO
コトリヌス
2018/07/04(水) 07:37:22.00ID:QS1wdrQw
>>751
だからKotlinで書けよ
自動変換は完璧じゃない
2018/07/04(水) 07:37:52.39ID:K6PpspCw
基礎からやっていくか、状況をちゃんと説明出来るようになるか
2018/07/04(水) 07:42:41.16ID:d8xWcdxC
初心者でせっかくだらjavaよりも新しいkotlinでやろうと勉強中なんだけど、結局javaも知らんといかんのね…
2018/07/04(水) 07:54:41.64ID:qSU3AFLq
「こんぱいるとおりません」は実際なんも説明してねーからな

で、「ほんとうに」全部自分でゼロから作るならJavaの知識は不要なのだけど
実際はJavaの内部ライブラリやJava製の外部ライブラリを利用するorさせられることが多いので
Javaは少なくとも読めて呼び出し法くらいは知っておかないと現状余裕で詰まる
2018/07/04(水) 08:34:41.84ID:dJOGt5Qc
普通に、コンストラクタの引数がちがうか、importしてないか、importするための設定をbuild.gradleに書いてないかだろ
2018/07/04(水) 08:39:44.33ID:hww1W9rh
ああそのレベルならimportしてないが有力だな、確かにw
2018/07/04(水) 08:42:59.27ID:bgzrJhKa
ビルド通ったやついるん?
2018/07/04(水) 10:08:54.78ID:lcEaonpe
importしてないならその前でコケるだろjk
sdkのバージョン違いじゃないの?
2018/07/04(水) 10:40:04.79ID:dJOGt5Qc
build.gradleのandroid {} のなかに dataBinding { enable = true } 書いて、ObservableField のとこで Alt + Enter すれば、必要なimport が追加されたよ
2018/07/04(水) 11:34:18.64ID:Fv6I2084
return context.getResources().getString(R.string.name, first.get, last.get();
ここの行のfirst.getもfirst.get()のはずだし、公式のサンプルコードがおかしいんじゃねえの
2018/07/04(水) 11:39:55.59ID:PJj9ZCzu
>>747
ありがとうございました!
2018/07/04(水) 14:18:24.41ID:6R9abQ63
kotlinはネット投稿越しの説明デバッグが面倒くさい…
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況