X



Kotlin 2

■ このスレッドは過去ログ倉庫に格納されています
0783デフォルトの名無しさん
垢版 |
2018/03/01(木) 19:23:41.14ID:cE1p2NGM
コンパイルエラーがでるからそこらへん適当にやっててもなんとかなったけどww。
真面目に考えるとどうなってんだこれww
今までコンパイルエラーが消えるように適当に例えば、
fun testAsync(): Deffered<String> {
 return async {
  lock.withLock {
   "ABC"
  }
 }
}
むしろ、retrunを付けると怒られたからこのままにしたけど。return@asyncってラベルつけるればいいのか。
ラベルつけない場合はどうなってんだこれ。
0786デフォルトの名無しさん
垢版 |
2018/03/02(金) 19:55:39.45ID:UK6+GFm3
>>785
ありがとう。ちょっと前に話題になってたのね。
つか、前に教えてもらったhttp://jetbrains.github.io/kotlin-spec/
にそれに関する事のってねぇな?

DartだってECMAでしっかりした仕様書になってるのに、
仕様書がいまだにこんなレベルなのにAndroidのFirst Class Languageにするなんて
Google何考えてんだか・・
0787デフォルトの名無しさん
垢版 |
2018/03/02(金) 20:38:44.95ID:UK6+GFm3
後、
https://ideone.com/RIMEHi
で、
val t = Test()
t.update()
にすると、propertyが変更されないっぽいんですけど、なんででしょうか??
Android環境でコルーチンを使ってます
よろしくお願いします。
0791デフォルトの名無しさん
垢版 |
2018/03/03(土) 00:14:44.42ID:xuTznB0o
>>787
Androidやコルーチンであることは直接の関係が無く
インラインでないラムダとprivate setの組み合わせが影響しているようだ

https://ideone.com/aLit2X
↑これの「4」が出力されるケースと同じでsetの処理を通らずに
バッキングフィールドに直に代入されてると思う

バグか仕様か断言はしないけど、多分コンパイラのバグじゃないかな
0792デフォルトの名無しさん
垢版 |
2018/03/03(土) 00:41:15.44ID:AQTy3jz6
>>791
うぉぉ。ありがとう。コルーチン関係なかったのか。
まだ、インラインとか勉強してなくてさっぱりだけどw
この前の>>658も俺だし、
真面目にkotlinで開発しようと思って2週間ぐらいでこのザマとか
なんなのkotlinの品質。笑えないな。
0794デフォルトの名無しさん
垢版 |
2018/03/03(土) 01:02:48.20ID:AQTy3jz6
そうだよね。俺もちょっと前というか昨日もそうだけど、>>787のまた変な動きに出くわして
さすがにうんざりしてIssue Trackerのぞいたけど、前のも報告されてないっぽいよねww

つか、前のやつは単なるコンパイラのバグですまされない仕様修正とか入りそうな予感してるんだけど。
まぁ、現状の仕様ってのがなんだかよくわからんけど。
0796デフォルトの名無しさん
垢版 |
2018/03/03(土) 09:31:08.45ID:xuTznB0o
コンパイラのバグはバグとして直すのが当然だけど

この前のバッキングフィールドの初期化回避や
setter内のインラインでないラムダからバッキングフィールドにアクセスするのを
普通のアプリ開発として書いているのなら止めた方が良いと思う

個人的な感覚では動作以前に「コンパイルが通るべきでは無いコード」だと思うので
0798デフォルトの名無しさん
垢版 |
2018/03/03(土) 20:31:37.81ID:AQTy3jz6
kotlinで3000行くらいすでに書いちゃったけど、とりあえず、private setをpublic setに直して回避・・
しばらくflutterで遊んでくるか
0799デフォルトの名無しさん
垢版 |
2018/03/03(土) 20:32:59.01ID:usZqppoC
しようがないなあ
0803デフォルトの名無しさん
垢版 |
2018/03/04(日) 14:48:36.99ID:D9lK5f2H
これからプログラミング初心者がkotlinを触るようになったらそこらへんも色々見つかるだろうね
今はまだほぼ他の言語で経験のある人しか触ってないでしょ
0806デフォルトの名無しさん
垢版 |
2018/03/05(月) 12:20:24.87ID:qx4LEZCO
他の言語っていうか、java本業の人しか触ってないでしょ
Androidの入門書もまだほぼjavaばっかだし
0807デフォルトの名無しさん
垢版 |
2018/03/06(火) 10:59:36.24ID:do1rqvuo
コマンドラインから何も引数付けずに kotlinc 実行するとRPELで動くけどこの時に :help で出てくる :dump bytecode ってなんなの?
名前からしてバイトコードをダンプするであろうことはわかるけど、いつやっても何も出ないんだよね。
0808デフォルトの名無しさん
垢版 |
2018/03/06(火) 11:00:47.10ID:do1rqvuo
タイプミスった。rpelじゃねえ。replだ。
0809デフォルトの名無しさん
垢版 |
2018/03/07(水) 22:44:21.36ID:hoG4dIXg
C#のnameof演算子だと、コンパイル時に評価されますけど。
kotlinのプロパテイ参照は結構オーバーヘッド高いですかね??
when (propertyName) {
::property1.name ->
::property2.name ->
}
結構頻繁に評価されるコードなんですよね
0810デフォルトの名無しさん
垢版 |
2018/03/07(水) 22:49:50.60ID:hoG4dIXg
今は定数でやってんですけど、まだ書き換えるべきが保留してるんです。
when (propertyName) {
"property1" ->
"property2" ->
}
リフレクション絡みのオブジェクトも普通にGC対象?で、その都度生成されたり破棄されたりすると予想しますが。
もちろんアプリ全体のボトルネックになるぐらい影響はないですけど、うーん。踏ん切りがつかん。
0812デフォルトの名無しさん
垢版 |
2018/03/08(木) 00:35:53.57ID:c/6ZktFW
>>810
ありがとうございます。そうですね。プロパティ増やすたびにEnumの定数も定義する必要がありますが、
パフォーマンス的にはいいですよね。

で、今ちょっと見たことなかったんですけど、Javaのバイトコード見てみたんですけど最適化されてるのか??
メソッド呼び出しされてるのかと思ったら、定数値に置き換えられてました。
最適化のせいなら将来のコンパイラでどうなるかわかりませんけど、とりあえず、普通にプロパティ参照使って
置き換えてます。

ありがとうございました。
0814デフォルトの名無しさん
垢版 |
2018/03/10(土) 08:59:29.43ID:sfqxq7fN
でもそれ結局今日も同じメニューになるよな
たまにはやよい軒行きたいわ、遠いけど
0819デフォルトの名無しさん
垢版 |
2018/03/10(土) 11:07:21.06ID:TTti/WSS
それは残念
0820デフォルトの名無しさん
垢版 |
2018/03/10(土) 11:15:49.69ID:McxjgaUo
waitとかマルチスレッド機能ぐらい用意しとけよー
結局java.lang.Objectから離れれられんじゃないか
0822デフォルトの名無しさん
垢版 |
2018/03/10(土) 19:55:04.16ID:Uyf8EqGw
逆に言えばJavaの機能で出来ることをわざわざKotlinで独自に作り直す必要ってあるかね
0823デフォルトの名無しさん
垢版 |
2018/03/10(土) 20:16:52.67ID:MudN2Ixk
クロスプラットフォーム押していくなら、Javaからある程度離れて開発できないとな。
Kotlin=JVMなら別にいいけど。
0825デフォルトの名無しさん
垢版 |
2018/03/10(土) 20:34:05.66ID:MudN2Ixk
それが一番だけど、そうなるにはそうなるにはJetBrainsの対応待ってると時間かかりそうだから、
Google買収しないと。IDE全体抱えてもあれだからkotlin部門だけでも
0826デフォルトの名無しさん
垢版 |
2018/03/10(土) 23:43:23.18ID:MSLQ1fUp
>>822
機能的に同じでも、より簡潔に書けるなら価値ある
0827デフォルトの名無しさん
垢版 |
2018/03/11(日) 16:57:48.79ID:WkTMJw5e
ゆくゆくはそうなっていくかもしれないけど、まずはJava完全互換を徹底して開発者を集めないとKotlin自体終わっちゃうし
0831デフォルトの名無しさん
垢版 |
2018/03/13(火) 17:21:36.75ID:UOahYQi3
超初心者で申し訳ありません。
Kotlinスタートブックを購入しました。
REPLを多用してるのでAndroid Studio3.01のREPLで進めたいのですが、
単純に、Kotlin REPLパネル内に、書籍のコード〜 じゃ無いようで、今一つ、Android StudioのREPLの使い方が分かりません。

Android Studio3.01のREPLで、「Kotlinスタートブック」をスターと部分だけでも紹介してる情報なありますでしょうか?
0832デフォルトの名無しさん
垢版 |
2018/03/13(火) 18:59:50.25ID:UOahYQi3
あれこれして
書籍 P28の最初の一発目

class Rational(val numerator: Int, val denominator: Int)
val half = Rational(1,2)
half.denominator
  と、打ち込んで 実行させたら、2って出来ました〜

Android Studio3.01のREPLを使って、読みすすめそうです。
0833デフォルトの名無しさん
垢版 |
2018/03/14(水) 10:24:21.09ID:lhJp7l4Q
解決したみたいだからいいけど、
技術書を写経するときはREPLよりもコードをファイルとして残しておいた方がいいと思うよ

読み進めた後にちょっと前に見たところを戻って書き換えたりとかしたくなることが多いと思う
0838デフォルトの名無しさん
垢版 |
2018/03/14(水) 13:03:14.15ID:BC3u9Cri
ちょこちょこバージョンアップしてるみたいだけど、リリースノートってあるのかな?
0839デフォルトの名無しさん
垢版 |
2018/03/14(水) 13:30:40.55ID:+tq877Bs
Swiftのバージョンアップは破壊的変更が多くてダルいらしいけどKotlinはどうなの?
0842デフォルトの名無しさん
垢版 |
2018/03/14(水) 14:27:37.09ID:qG6o0CFM
>>835
Android studio使ってるならファイルをデバッグ実行してEvaluate Expressionするのが1番フィードバックが早くて使い勝手も良い
0844デフォルトの名無しさん
垢版 |
2018/03/14(水) 16:57:41.33ID:OPcLX1QE
>>843
ごくごく初期はなんか色々あったらしいけど、最近は既存のコードが動かなくなるような変更は記憶にないな。
そこらへんはJavaのカルチャーかも
0854デフォルトの名無しさん
垢版 |
2018/03/18(日) 00:15:28.10ID:JCaBc1o3
ぶっちゃけ、PythonとKotlin覚えときゃ十分だよな
ソース見られてもいいようなちょっとした内部処理はPythonでやって、それ以外はKotlinでやればいいし
0855デフォルトの名無しさん
垢版 |
2018/03/18(日) 08:08:21.52ID:ewv3muP4
REPLの使い方の説明ないんだよねあの本
ぶっちゃけ最初からいきなりファイル書いたほうがいいと思うわ
0856デフォルトの名無しさん
垢版 |
2018/03/18(日) 17:30:16.63ID:lc8puhwP
REPL の :dump bytecode が未だにわからん。
分かるやつは居ないのか?
0857デフォルトの名無しさん
垢版 |
2018/03/18(日) 19:44:41.94ID:9zPyp0Eq
githubで検索してmasterブランチのソース見たけど :dump bytecodeの対象は
ReplFromTerminal 経由で ReplInterpreterが直に持ってるReplClassLoaderで
ReplClassLoaderはaddClassされたものをdumpするみたい

それで addClass探したら HistoryActionsForNoRepeat で
ReplClassLoaderを新たに生成してaddClassしてるのしか見当たらなかった

読み間違いでなければ、addと列挙を異なるReplClassLoaderインスタンスでやってるので
dump bytecodeは常に何も出ないのでは
0858デフォルトの名無しさん
垢版 |
2018/03/18(日) 19:58:20.59ID:9zPyp0Eq
HistoryActionsForNoRepeatで作られるReplClassLoaderは
topClassLoaderと合わせて3重にネストしてるように見える

ReplClassLoader (HistoryActionsForNoRepeatのメソッド内のclassLoader)
→親 URLClassLoader
→親 ReplClassLoader (状態によってはGenericReplEvaluatorStateのtopClassLoader)
→親 URLClassLoader
→親 ReplClassLoader (ReplInterpreterのclassLoader)
→親 URLClassLoader

makeReplClassLoaderは引数のbaseClassloaderがReplInterpreterだったら
newせず引数をキャストして返した方がいいような気が
0860デフォルトの名無しさん
垢版 |
2018/03/18(日) 22:52:30.43ID:R4d/cKLT
>>856
わからないことがあったらコードを読む習慣がある奴と乞食するだけのお前
どんどん差は開いていくんだろうなぁ
0861デフォルトの名無しさん
垢版 |
2018/03/18(日) 23:20:50.45ID:z+wS9hu5
>>860
ちょっと意地悪だなあ
0864デフォルトの名無しさん
垢版 |
2018/03/19(月) 09:59:38.75ID:fKuRgkEG
まー、わからないことがあればコード読むのが一番だけど、読まなくても質問の仕方ってもんがあるよな
0870デフォルトの名無しさん
垢版 |
2018/03/19(月) 12:44:20.63ID:/OLYcrDu
この一言を添えるべきだったな。

「わからない人は書かないでください。」
0872デフォルトの名無しさん
垢版 |
2018/03/19(月) 14:44:57.52ID:/OLYcrDu
3E 00
0873デフォルトの名無しさん
垢版 |
2018/03/19(月) 14:51:05.74ID:G/+G0Iaz
18 FC
0877デフォルトの名無しさん
垢版 |
2018/03/19(月) 19:46:11.90ID:ahbMAcYG
>>874
機械語にハンドアセンブルしなきゃ…
0879デフォルトの名無しさん
垢版 |
2018/03/19(月) 21:42:58.40ID:t8aO/EAD
にやーず
■ このスレッドは過去ログ倉庫に格納されています

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