19/02/06 19:35:52.56 59jOjkSQ.net
上でシステム系にはGoみたいに書かれてるんだけど、kotlin/nativeはGoより遅いのかな。
現状ではそうなのかも知れないけど、最終的にはGoと同等の速度が出せるポテンシャル(仕組み)だと
思ってるんだけどそうでもないの?
236:デフォルトの名無しさん
19/02/06 19:49:42.95 nvZvChxt.net
goに勝つのは流石に無理じゃ?
237:デフォルトの名無しさん
19/02/06 20:35:25.96 gjOdQxAx.net
Goに比べたら遥かに複雑怪奇な言語だから最適化は不利だろう
JVMの挙動をエミュレーションするための無駄な処理は少なからず必要だろうし
238:デフォルトの名無しさん
19/02/07 00:37:31.07 UFwIxg8c.net
1 c
2 go
5 jvm
10 script系
3くらいいける?
239:デフォルトの名無しさん
19/02/07 05:59:54.51 Ftq4Fy0N.net
>>232
構造的に無理
Goは構造をシンプルに保って高速軽量を維持するために言語仕様を必要最低限にしてるから、
書く人間の使いやすさを追求してるこちょりんとは根本的に目指してるものからして違う
240:デフォルトの名無しさん
19/02/07 07:33:55.52 ygKhuk/7.net
>>235
いけると思う
JIT後はJVMが1~2だけど
241:デフォルトの名無しさん
19/02/07 08:43:07.10 qMU5zT+q.net
なんでRustはあんなに速いん?言語の抽象度は同じくらいやろ?
242:デフォルトの名無しさん
19/02/07 10:01:05.59 ygKhuk/7.net
>>238
根幹の言語機能の所有権とライフタイムにより
C++でのムーブセマンティクスやRAII
243:みたいなのをより高度にコンパイラが認識出来るので 速度(効率)を保ったまま安全性を高められてる
244:デフォルトの名無しさん
19/02/07 10:55:21.09 esduY2Xd.net
Goはフットプリントも小さいからな。
C++だと、iostreamを静的リンクしただけでもそこそこ大きくなるのに。
245:デフォルトの名無しさん
19/02/07 12:43:04.54 nkNDSe3E.net
上で1..10の速さ書いたんやけどあれは実測じゃなくて速さランクのイメージや。
go<kotlin native<<jvm<<壁<<script言語
こうなるなら納得なんやけど、現実には
kotlin native ≒ jvmなの?
最適化されたらgoに迫ると思い込んでるんやけどそんな甘くないんかな。
246:デフォルトの名無しさん
19/02/07 13:44:29.30 Ftq4Fy0N.net
最適化できたらそらそうだけど、その最適化がどこまで出来るかどうかはお天道様にしか分からない
247:デフォルトの名無しさん
19/02/07 14:46:10.65 nkNDSe3E.net
それもそうやね。大人しく半年か1年くらい待ってみるわ
248:デフォルトの名無しさん
19/02/07 14:47:12.25 ygKhuk/7.net
コンパイラの頑張り次第で Go ≒ Kotlin/Native まで行ける可能性はある
ベンチマークでは C ≒ Rust << Go ≒ JVM
Rust vs Go URLリンク(benchmarksgame-team.pages.debian.net)
Go vs Java URLリンク(benchmarksgame-team.pages.debian.net)
しかしGCの性質の違い、JVM起動時間、JIT、並列処理サポートなどにより
各ユースケースに対する適性は速度だけでは決まらない
249:デフォルトの名無しさん
19/02/08 16:17:29.13 nPWMA0BU.net
3桁ごとにカンマ打つには、
val str= "123456"
println( str.format("%,d"))
想定では、123,456のはずが123456になる
使い方間違ってるかな?
250:デフォルトの名無しさん
19/02/08 17:15:55.53 3DPCoowD.net
逆じゃね?
251:デフォルトの名無しさん
19/02/08 18:09:56.46 nPWMA0BU.net
逆+Intでないとダメみたい
BigDecimal放り込んだら勝手に12,345.6789みたいになればと思ったんだけど、自分で作るの面倒で信用ならん
252:デフォルトの名無しさん
19/02/08 18:45:11.42 MkVUfclC.net
jvmならNumberFormatでいいんじゃないの
import java.math.BigDecimal
import java.text.NumberFormat
val BigDecimal.fmtStr: String
get() = NumberFormat.getNumberInstance().format(this)
fun main(args: Array<String>) {
val a = BigDecimal(12345.6789)
println("${a.fmtStr}")
}
253:デフォルトの名無しさん
19/02/08 19:35:10.36 MkVUfclC.net
ごめんよく見たら丸められてたから訂正
URLリンク(ideone.com)
254:デフォルトの名無しさん
19/02/08 19:59:36.92 nPWMA0BU.net
>249
"."探して、整数と小数点以下に分けて整数部分にカンマ打ってから合体させようとしこしこ作ってたら別のアイデア出てた
ありがと
255:デフォルトの名無しさん
19/02/09 06:09:56.82 6/bHpQ6m.net
locale によってはカンマが3桁区切りではないかも知れないし記号がカンマではないかも知れないので
こうやって自分でやっちゃった方が良いのでは?
println(java.text.DecimalFormat("#,##0.000").format(java.math.BigDecimal("1234567890.1235"))) // 1,234,567,890.124
256:デフォルトの名無しさん
19/02/09 07:35:37.20 fJwH+mSX.net
>>251
ロケールに従わず常にカンマにしたいという意図ならそれだとそぐわないと思う
DecimalFormatに与えたカンマはカンマという文字ではなくグループ区切り子なのでロケールに応じた文字で出力されるよ
257:デフォルトの名無しさん
19/02/10 17:34:05.13 BbTEeZaP.net
日本, アメリカ, イギリス 他
1 = 1.000 < 10 < 1,000 = 1000
ドイツ, イタリア 他
1 = 1,000 < 10 < 1.000 = 1000
ロシア, フランス 他
1 = 1,000 < 10 < 1 000 = 1000
オーストラリア, カナダ 他
1 = 1.000 < 10 < 1 000 = 1000
国際単位系(SI)
1 = 1,000 = 1.000 < 10 < 1 000 = 1000
空白を小数区切りに使う国が無いことと、ポイントとカンマの各国のばらつきから
読み取り間違いを避けるための妥協案のようなもの
258:デフォルトの名無しさん
19/02/10 17:41:28.40 BbTEeZaP.net
おまけ
Ruby, Java, Kotlin 他
1 = 1.000 < 10 < 1_000 = 1000
C++
1 = 1.000 < 10 < 1'000 = 1000
アンダースコアをユーザー定義リテラル用に使っていたため
259:デフォルトの名無しさん
19/02/10 18:10:30.74 6jFJUgix.net
そうか。じゃあグループセパレータを自分でカンマにセットしとかないと確実にカンマにはならないってことだな。
260:デフォルトの名無しさん
19/02/12 05:43:38.35 xDY2FToe.net
Java全然書いたことないんだけどJavaのこと調べてたらこの言語に辿り着いた
Android公式言語とのことだけど、Androidアプリ開発以外の用途でJavaでやることもKotlinで出来るの?
もうJavaじゃなくてKotlin学んだほうがいい?
PythonとCしか書けない
261:デフォルトの名無しさん
19/02/12 05:56:17.28 SvKCMiwA.net
おわこん
262:デフォルトの名無しさん
19/02/12 06:15:00.09 PanSk5rI.net
>>256
> JavaでやることもKotlinで出来るの?
できる。
> もうJavaじゃなくてKotlin学んだほうがいい?
JavaをやってからKotlinを学んだほうがいいけど、PythonとCができるなら、Kotlinから始めるのもありかも。
263:デフォルトの名無しさん
19/02/12 08:01:07.40 zazJl4ej.net
>>256
APIリファレンス読むためにJavaのメソッド定義の構文を知っておくくらいで
Kotlinをメインに学んで良いと思うよ
成果物はJavaクラスファイル(※)なので出来ることは同じ
やろうと思えば1プロジェクトで混在しても普通にお互い呼べる
※Kotlin/JS, Kotin/Nativeとかの別形式もある
264:デフォルトの名無しさん
19/02/12 11:22:53.23 8lolhehX.net
Scalaってどこいったん?
265:デフォルトの名無しさん
19/02/12 14:31:00.63 8DpMAebM.net
Scalaは衰退しました
266:デフォルトの名無しさん
19/02/12 15:06:09.44 ncKC6kPX.net
使われてるところでは安定して使われてるみたい
拡大は止まったと思うけど
267:デフォルトの名無しさん
19/02/12 20:08:57.00 hkCwi0n8.net
scala組がkotlinに合流してくれたら覇権言語狙えるんやないか。
ということは、kotlinに必要なのはお洒落感?
268:デフォルトの名無しさん
19/02/12 20:28:23.96 VerJGrBE.net
Scalaやってた意識高い系はみんなとっくにRustへ移行した
269:デフォルトの名無しさん
19/02/12 21:03:35.46 pT/fbk4d.net
>>256
それをJavaで作る必要があって、Javaで作ることを誰かに強制されているなら、それはJavaで作る
それをJavaで作る必要があって、Javaで作ることを誰にも強制されてないなら、それはKotlinで作る
それをJavaで作る必要がないなら、JavaでもKotlinでも作らない。他の言語を使う。めんどくさいじゃん
270:デフォルトの名無しさん
19/02/13 09:04:09.69 KRdNZL9E.net
ちょっと前はScala民がやたらKotlinを叩いてたけど、それももう見なくなったな
271:デフォルトの名無しさん
19/02/13 13:18:45.36 ikkFeMPB.net
現在はKotlin教とGo教の戦い?
272:デフォルトの名無しさん
19/02/13 14:52:01.31 e0d6KWci.net
言語に自己肯定感を求める人は無難無個性言語Kotlinや低脳言語Goでは欲求が満たされないことを知りRustへ行った
273:デフォルトの名無しさん
19/02/13 18:00:16.64 41RZIXro.net
>>267
両方とも同時期に流行り始めたけど、用途的にあんまり競合してない希ガス
274:デフォルトの名無しさん
19/02/13 19:36:21.84 n4QfG8LN.net
おれもどうせならオシャレな言語がいいんだがスマホのアプリ作りたいならkotlinしかないよね?
275:デフォルトの名無しさん
19/02/13 20:05:24.56 o4GE+skC.net
つDart
276:デフォルトの名無しさん
19/02/13 20:07:39.49 kPXKdc0M.net
dartがオシャレ…?
277:デフォルトの名無しさん
19/02/13 20:43:21.05 KRdNZL9E.net
flutter普及への最大の障害がDartだよな
278:デフォルトの名無しさん
19/02/13 22:02:27.55 O2gl0nE8.net
>>270
あなたの言うスマホアプリがゲームだけであるなら、Unityを使うことができる
これはWindowsマシンでAndroidゲームもiPhoneゲームも作ることができる(iPhoneの実機はあったほうがいいけど)
あなたの言うスマホアプリがiPhoneアプリであるなら開発マシンはMacでiPhoneは必須、個人なら言語は公式のSwift(就職する気なら今からObjective-Cに手を出して時間不足で爆死しよう)
Windowsマシンでも作成だけはできるがユーザーの「よくわからないけど動きません」に対して「よくわからないので直せません」と答えるしかなくなる(所詮エミュ)
あなたの言うスマホアプリがAndroidアプリである場合のみ、Windows(別にLinuxでもMacでもいいけど)でKotlinを使うことで作ることができる
ゲームを作ることももちろんできるが、基本的に全部自力での実装になるので序盤から山が高いし若干面倒くさい(後々勉強にはなるが)
手間と面倒だけ考えるならUnityとC#でやったほうがサンプルも解説も書籍もライブラリも山ほどあるし楽は楽、詰まってもだいたい先人が解いてるのでイージー。タイムイズマネー
もちろん他の言語で作ることもできて、たとえばもしあなたにC++の知識があるならC++でゴリゴリ作ることもできるんだけど、そんな人はこんなこと聞かないよね
えっXamarin?ごめーん忘れてた。「もしあなたがいっぱしのWindowsアプリケーション開発者であるなら」その知識とXamarinとC#と.NETを使うことでAndroid/iPhoneアプリ開発ができるよ
279:デフォルトの名無しさん
19/02/13 23:07:05.67 eA/7rWxO.net
>>268
それぞれちょっとずつカジってみたんだけどScalaの人がRustでファイナルアンサーするとは思えんかった。
RustはWebやるにはキツかったからまだどっかで彷徨ってるのかも。
>>269
現在のGoの用途→Webサーバ、Nativeアプリ
JetBrainsが思惑ってるKotlin, Kotlin/Nativeの用途→ Webサーバ, Nativeアプリ、というか何だか色々。
うまく行けばこれから競合していくんかな。
280:デフォルトの名無しさん
19/02/14 06:44:05.14 l2sDxPpK.net
>>275
Goもこちょりんもどちらも使うけど、一口にWEBサーバーと言っても得意なジャンルが違うな、少なくとも現時点では。
今後GoにSpringみたいなフルスタックのフレームワークが出てきたら思いっきり競合するかもね。
281:デフォルトの名無しさん
19/02/14 09:29:59.23 9tQDIG7c.net
合体させて Gotlin
282:デフォルトの名無しさん
19/02/14 11:59:45.42 PQjGjDTM.net
実際、Goの運用性とKotlinの生産性が合わさればわりと最強だと思う
Kotlin nativeみたいにKotlinのエコシステムを再現する方向だとどうしてもJVMをエミュレーションするような感じになって歪みが出る
逆にGoの文法をKotlinに寄せるほうが筋がいい
283:デフォルトの名無しさん
19/02/14 13:00:16.45 DBAMfZpK.net
歪みってどういうの?
284:デフォルトの名無しさん
19/02/14 15:39:16.51 cVDEqZjL.net
>>279
逆に聞くが、仮に完全にゼロベースで Kotlin native を開発してたとして、今と同じ言語仕様になったと思う?
特定の処理系を前提にして作られて普及した言語が他へ移植されて成功した例はない
285:デフォルトの名無しさん
19/02/14 17:06:41.26 DBAMfZpK.net
具体的な支障は無いってことでいいの?
286:デフォルトの名無しさん
19/02/14 19:02:02.86 HgCh9LDM.net
横からだけどjvmの負の特性も引き継ぎやすいってことかと思った。
起動が遅いとか、メモリ食うとか。
287:デフォルトの名無しさん
19/02/14 21:20:40.39 FnxMJF+D.net
起動が遅い事は遅いが昔からすれば今時のPCは速いね。
Windows95や98の頃なんかどうしてくれようというほど遅かったからなあ。
昔はみんな忍耐力強かったよなあ。
288:デフォルトの名無しさん
19/02/15 05:29:24.84 Ytmv+Yd8.net
>>280
確かにJVMのジェネリクス型消去がなかったら、reifiedみたいな複雑怪奇な仕様はなかったろうな。
移植については大抵は非公式移植事例だから、楽観はできないけど、まだ決めつけるには速いかと。
Scala.NET...うっ、頭が...
289:デフォルトの名無しさん
19/02/15 08:15:53.64 EWf/hEPb.net
新しいところでいうと、inline classなんか普通にユーザー定義の値型があれば全く必要ないな
unsigned integerもだいぶ無理矢理感が酷い
Kotlin native特有の話だと、C interopのための構造体のマッピングとか超無理矢理で最高にエイリアン感ある
290:デフォルトの名無しさん
19/02/15 09:58:26.61 KLsspNaS.net
iPhoneにおけるSwiftの立ち位置=AndroidにおけるKotlinの立ち位置
291:デフォルトの名無しさん
19/02/15 10:48:24.63 szDoWtiX.net
あ、はい
292:デフォルトの名無しさん
19/02/15 10:54:34.88 tar5L0r6.net
inline class = ユーザー定義の値型 = C#のstruct
そして最適化が十分ならそれらが必要無いことをRustとGoが証明してる
ヒープかスタックかは自動で判断される
293:デフォルトの名無しさん
19/02/15 10:56:38.52 PR4djPv7.net
特定のVM前提で設計されて他へ移植されて成功した言語の例としてはAndroidのJava/KotlinやUnityのC#、Node.jsのJSあたりが該当すると言えなくもないけど、
それらは言語の移植ではなくVMごと移植だからなあ
基本的にVM言語の他への移植は成功しないよ
294:デフォルトの名無しさん
19/02/15 11:07:58.47 tar5L0r6.net
AndroidやC#のいくつかのターゲットはAOTで
それらも「VMごと」に含むなら
LLVMを使うC++(Clang)も同じ扱いになる
295:デフォルトの名無しさん
19/02/15 15:42:23.69 FI28dGgE.net
最近、kotlin触ってるけど、C#より学習コストが高いです
それで、C#erがkotlinに切り替える際に、意識すべき点って何かありますか?
296:デフォルトの名無しさん
19/02/15 16:15:05.26 PR4djPv7.net
>>291
Javaの制限を理解すること
JVMは.NETのCLRに比べて機能的にはずっとショボくて、その制限に由来する奇妙な仕様がKotlinには数多く存在する
Javaに慣れてないとそのあたりは直感的に理解しづらい
297:デフォルトの名無しさん
19/02/15 17:24:02.62 Hx3jejna.net
>>292さんの言ってる「Javaの制限」て例えばどんなこと?
298:デフォルトの名無しさん
19/02/15 17:29:59.00 tar5L0r6.net
>>291
プログラム言語全般に言えることだけど
各構文を概要程度でも良いので、まずは一通り知ること
C#知ってて引っ掛かりそうな箇所として思いついたのは
・最後のパラメータがラムダの場合は丸括弧の後に書ける
他に引数が無い場合は丸括弧も省略出来る
(GroovyやSwiftのTrailing Closureと同じ)
・レシーバ付きラムダ
・inlineラムダ
・returnはfunから抜けるもので、ラムダから抜けるものではない
・IterableとSequenceは遅延評価
・コンパイルでジェネリクス情報は消える
・suspendは同期(await)が基本動作
299:デフォルトの名無しさん
19/02/15 17:31:30.02 tar5L0r6.net
>>294脱字
× ・IterableとSequenceは遅延評価
〇 ・Iterableと違ってSequenceは遅延評価
300:デフォルトの名無しさん
19/02/15 22:07:22.01 KHCIiBIM.net
kotlin勉強中なんだけど、結局のところjetbrainsがscala推さずにkotlin出したのは何でなの?
商業的に旨みがあるから?それともbetter javaとしてのscalaに見切りをつけたから?それとも?
301:デフォルトの名無しさん
19/02/15 22:33:17.97 tar5L0r6.net
コンセプトの違い
302:デフォルトの名無しさん
19/02/15 23:10:54.49 9S5XTVoX.net
>>296
自分でScalaやってみればすぐにわかるよ
まともな感性があれば、あんなものが普及するわけがないことは明らかだった
JetBrainsもIDEを作る会社として自由にできる言語が一つは欲しかったというのはもちろんあっただろうけどね
303:デフォルトの名無しさん
19/02/15 23:25:58.35 KHCIiBIM.net
>>296
なるほど。Scalaのこれ以上の普及は難しいという判断があった(だろう)ってことなら納得。
304:デフォルトの名無しさん
19/02/15 23:41:27.98 KHCIiBIM.net
まちがえた。上は >>298
雑念を捨ててkotlin邁進してきます
305:デフォルトの名無しさん
19/02/16 15:17:06.30 lTjIe/CZ.net
Scalaは言語マニアのオナニー言語だよなあ
306:デフォルトの名無しさん
19/02/16 17:00:29.98 odkD9xpX.net
なんだかんだでscalaは採用企業多いけどね
kotlinもtwitterとかpaypalみたいな大手で使ってくれると宣伝になるんだけど
307:デフォルトの名無しさん
19/02/16 17:31:16.36 W7DuQqzW.net
日本のYahooがKotlin採用したくらいではさざなみさえ立たないか
308:デフォルトの名無しさん
19/02/17 08:06:13.22 8BWCGdz7.net
Scalaの方が出たのが早かったし意識高い系(笑)が挙って使ったから
でもそれを維持出来る新人たちが居ないのが現状
Scalaは端的に複雑で難解な部分が多い
2018年後半以降Scalaの記事殆ど見かけないやろ?
コップ本(笑)
309:デフォルトの名無しさん
19/02/17 11:12:07.88 IdBTBZJc.net
Androidの公式言語がScalaになる世界線もあり得たと思うけど、そうならなかったってことはつまりそういうこと
310:デフォルトの名無しさん
19/02/17 11:17:52.27 IdBTBZJc.net
一年くらいScalaで仕事してたしまあ慣れればどうってことはないと思うけど、ScalaとKotlinで選べるとしたらよほどの変人以外はKotlin選ぶと思うわw
311:デフォルトの名無しさん
19/02/17 11:30:47.79 OQFPUwNT.net
ScalaはHaskellを意識しすぎ
簡潔に書きたいだけならKotlinかClosureの方がいい
312:デフォルトの名無しさん
19/02/17 11:57:32.09 nzXhLQND.net
Scalaのコンセプトは、スケーラビリティの理論実証
オブジェクト指向と関数型の統合によりスケーラビリティが実現すると考え
小規模から大規模まで同じ書き方/考え方で記述出来るように設計されている
出自はコンピュータサイエンスの学者
Kotlinのコンセプトは、より良い産業向け言語
Javaからの移行や相互運用、コンパイル速度、使い勝手について
「仕事の道具」であることを意識して設計されている
出自はIDE製品を提供する企業
313:デフォルトの名無しさん
19/02/17 12:47:22.79 7MWZQWrl.net
どっちも我田引水なだけやん
314:デフォルトの名無しさん
19/02/17 13:01:53.97 nzXhLQND.net
設計思想と既存資産があるから多様に派生し人が集まる
C, C++, Objective-Cが合流しないのも同様
それを我田引水と評することに何の意味もない
315:デフォルトの名無しさん
19/02/17 15:40:49.55 1RbyA1NJ.net
>>310
クスクス
316:デフォルトの名無しさん
19/02/17 15:53:56.04 tF7RiGiR.net
scalaでAndroidのプラグインとかあった気がする
我田引水ってなんか意味わからんな
317:デフォルトの名無しさん
19/02/17 23:16:27.59 ek0K0t7B.net
>>309
むしろ我田引水でない言語なんかあるんだろうか。
強いて言うならgrassとかwwww
318:デフォルトの名無しさん
19/02/18 02:04:27.28 XPBhJDxI.net
我田引水ってのは共用物について不正に占有したり自らの便宜を図ったりするような場合を言う
自己アピールや競争を含めた利己的な行動すべてを我田引水と揶揄するのは農耕民族的な発想が過ぎる
そういうのは道徳というより村八分や出る杭が打たれるのを恐れる面が強くイノベーションの足枷
319:デフォルトの名無しさん
19/02/18 11:11:01.50 +13B6eaL.net
もはや何のスレだか分からない
320:デフォルトの名無しさん
19/02/18 13:20:37.82 cZFby2gr.net
道徳説教スレ
321:デフォルトの名無しさん
19/02/18 13:34:09.52 trvxFZJG.net
我田引水スレ
322:デフォルトの名無しさん
19/02/18 19:19:37.69 I6FKQlBO.net
後ろ盾がjetbrainsっていうのはどうなんやろ。
大手と比べてどんなメリットデメリットあると思う?
323:デフォルトの名無しさん
19/02/18 19:29:55.81 Sk2Bqw0/.net
てか、我田引水ってどういう意味だっけwwww
324:デフォルトの名無しさん
19/02/18 19:50:06.12 TrdfW/q6.net
>>318
googleと仲いいしintellijシリーズが売れなくなるとも思えんし安泰なんじゃ?
325:デフォルトの名無しさん
19/02/18 20:44:26.76 bWM4TeHv.net
スカラ信者がまた荒らしてるな
326:デフォルトの名無しさん
19/02/18 21:57:58.91 EXht3ErA.net
>>318
大手と比べるとメリットはない。後ろ盾のない言語よりはいい。
IDEの開発会社という意味では、言語の普及がIDEの売上に直結する可能性があるので
Oracleみたいに独立不採算だからマネタイズに走るという思考にはなりにくいが、
絶対的なものではない。
327:デフォルトの名無しさん
19/02/18 22:33:30.93 nEhvYQ88.net
IDEの開発会社であるが故のリスクもあるけどね
VSCodeのような強力な他の開発ツールがKotlinサポートにおいてIntelliJを超えてしまってユーザーが流れた場合、
JetBrainsにとってKotlinの開発を続けることにもはや意味がなくなってしまう
328:デフォルトの名無しさん
19/02/18 22:58:18.56 /oirkxE3.net
後ろ盾最強はやっぱrust?
329:デフォルトの名無しさん
19/02/18 23:02:22.94 3dpq5+94.net
Goでぇす!
330:デフォルトの名無しさん
19/02/19 08:14:46.86 cAOiK8uf.net
後ろ盾の強さでいったらGoだべ
あれだけの巨大企業がついてる上に、開発も独裁せずに異常なまでにオープンであることを重視してるし
331:デフォルトの名無しさん
19/02/19 09:12:17.39 D8b3v+Fo.net
>>326
最強のSEO力でそう見せてるだけだぞ
それでもDartに対するヘイトは抑えきれなかったようだが
332:デフォルトの名無しさん
19/02/19 09:33:24.18 cAOiK8uf.net
>>327
直接Go開発周りのディスカッションを見てきての感想だから、SEOも何も関係ねーよ
英語が読めるなら自分の目で確かめることをお勧めする
あれはある意味理想的なOSS開発の形かもしれない
333:デフォルトの名無しさん
19/02/19 13:20:28.53 VQ802aqj.net
goは好きじゃないが>>326の言うことには同意
でもDartちゃんは駄目だから早く眠らせてあげて…
334:デフォルトの名無しさん
19/02/19 14:47:06.45 dYxLB9sm.net
FlutterがDartじゃなければ一気に覇権を取るまでありえただろうにな
335:デフォルトの名無しさん
19/02/20 14:22:13.38 v2qgHXVs.net
Android次期OSの開発言語がDartになるみたいな話どうなったん
336:デフォルトの名無しさん
19/02/20 15:43:28.44 YlCEZG7R.net
夢のOSなので夢で終わる
337:デフォルトの名無しさん
19/02/20 15:54:05.41 agArr1lp.net
ダー子
338:デフォルトの名無しさん
19/02/20 16:09:47.41 xuurx1V0.net
>>331
URLリンク(9to5google.com)
つまりJavaもKotlin/JVMも使える
339:デフォルトの名無しさん
19/02/20 17:27:44.53 9tgV50SM.net
Dream → Nightmare
340:デフォルトの名無しさん
19/02/20 19:05:59.81 v7iPz90J.net
夢は見るもの
目標は叶えるもの
341:デフォルトの名無しさん
19/02/20 19:45:33.26 TCqLAjvR.net
夢を見る島
342:デフォルトの名無しさん
19/02/20 21:47:37.37 sBZRwN3G.net
>>337
小鳥ん島
>>336
揚げ足鳥で悪いが、目標は達成するものだと思う。
343:デフォルトの名無しさん
19/02/22 04:03:22.89 DtR1+6r8.net
>>334
まじかよダートいらねーじゃん
344:デフォルトの名無しさん
19/02/23 12:08:36.03 9pS68leH.net
Котлин
345:デフォルトの名無しさん
19/02/24 12:59:23.23 pmK9w2Lp.net
ランキング画面を作っていてRecyclerViewの項目のソートをしたいんですが、
Cellectionをお気に入り数の降順でソートした上で、
タイトルとサブタイトルの昇順にソートするにはどうしたらいいですか
以下でお気に入り数の降順でソートするところまではできたんですが。
RankingDatas.sortedByDescending { it.bookMarkCount }
346:デフォルトの名無しさん
19/02/24 17:16:45.57 DytDvOjA.net
俺だったらデータを抜いてくる時点でソートをかけて抜いてくる。
347:デフォルトの名無しさん
19/02/24 17:28:12.24 pmK9w2Lp.net
APIレスポンスはそうして返してるんですが、
ローカルでお気に入りオンオフしてランキング順位が変わった場合に
再度APIを叩いてデータを取り直すのも微妙なので
その場合はローカルでソートして
順番を入れ替えたいという感じです
348:デフォルトの名無しさん
19/02/24 18:25:01.14 nlMNXQkf.net
ドキュメントにこう書いてあるからascendingとdescendingを順次呼び出せばいいんじゃない?
The sort is stable. It means that equal elements preserve their order relative to each other after sorting.
呼び出す順序はソート優先順位の逆順で
349:デフォルトの名無しさん
19/02/24 20:05:27.33 pmK9w2Lp.net
rankingDatas.sortedByDescending { it.bookMarkCount }.sortedBy { it.title }.sortedBy { it.subTitle }
やってみましたが、途中の結果は捨てられて単に subTitle の降順になるようです
350:デフォルトの名無しさん
19/02/24 20:26:13.24 pmK9w2Lp.net
昇順か
351:デフォルトの名無しさん
19/02/24 21:01:47.88 DSwgvg4z.net
sortedWithつかえ
352:デフォルトの名無しさん
19/02/24 21:07:06.34 pmK9w2Lp.net
できましたありがとうございました
353:デフォルトの名無しさん
19/02/25 01:07:00.43 EPSsIluE.net
呼び出す順序はソート優先順位の逆順でと言ったのに伝わらなかったか
354:デフォルトの名無しさん
19/02/25 05:33:03.93 D5d9E5fI.net
「kotlin sort multiple fields」で検索!
355:デフォルトの名無しさん
19/02/26 03:00:37.89 lsok3PaS.net
こういうことしたかったのか?
URLリンク(code.i-harness.com)
356:デフォルトの名無しさん
19/02/26 06:27:00.41 oQJIDyJZ.net
久しぶりに触ったらcoroutineがだいぶ変わってるらしくて以前からとりあえず動くけどよく分かってない状態だったのにもう全然分からないよ……(´・ω・`)
357:デフォルトの名無しさん
19/02/26 07:07:49.29 UAPWfCGq.net
>>352
とりあえず前知識として「コールバック地獄」について知っておくといいかも
358:デフォルトの名無しさん
19/02/26 08:39:12.02 5k0N70Wq.net
coroutine登場人物多すぎ
359:デフォルトの名無しさん
19/02/26 09:55:03.32 E0EMtjG2.net
え?子ルーチンそんなに変わったの?
360:デフォルトの名無しさん
19/02/26 10:37:15.60 UAPWfCGq.net
experimental中は色々変わったけど正式版以降の使い方は基本的に変わってないよ
URLリンク(github.com)
361:デフォルトの名無しさん
19/02/26 12:06:54.02 5MxkS3P7.net
>>351
のリンク先で、数値なら、- で降順にできるのか?
list.sortedWith(compareBy({ -it.age }, { it.name }, { it.address }))
Ruby なら、
arr2 = arr.sort_by { |a| [ -a[:score], a[:room] ] }
362:デフォルトの名無しさん
19/02/26 18:17:15.84 k06atLuF.net
>>357
できる。
363:デフォルトの名無しさん
19/02/28 03:26:51.88 oRFlldUh.net
ま、しかし、複数項目で昇順降順が混在する場合は自分で Comparator 作っちゃった方が楽かもね。
364:デフォルトの名無しさん
19/02/28 07:06:25.14 Lh1ejLNL.net
いやいや rankingDatas.sortedBy { it.subTitle }.sortedBy { it.title }.sortedByDescending { it.bookMarkCount } でいいじゃん
365:デフォルトの名無しさん
19/02/28 09:12:21.78 sPMvbV7g.net
直感的でない
366:デフォルトの名無しさん
19/02/28 09:15:13.48 UGZ/YaG8.net
>>360
処理時間3倍かかるよそれ
367:デフォルトの名無しさん
19/02/28 10:37:24.91 o8LdAn98.net
>>362
10万件ソートするなら使えないし、1000件しかソートしないなら問題ない
ランキングならたいした件数ないんじゃない
368:デフォルトの名無しさん
19/02/28 13:05:23.62 oAFMMcaR.net
>>360
それって2番目の並べ替えで1番目の並べ替えの順序が変わらないことは保証されてるの?
369:デフォルトの名無しさん
19/02/28 13:16:03.81 TwQuwGRl.net
stable sortだから保証されてる
370:デフォルトの名無しさん
19/02/28 15:53:56.89 sPMvbV7g.net
mutableLivedataを外部に公開したら良くないってことで
別途livedataを作ってそいつに参照を持たせて
外部にはlivedataだけ公開するっていうのを
全部のmutableLivedataに対して行うの面倒臭いんですが
なにかいい方法ないですか
371:デフォルトの名無しさん
19/02/28 19:05:52.26 TwQuwGRl.net
よく知らないけどmutableLivedataをコンストラクタで貰って
それを元にlivedataを作って両方保持するクラスでも作って包めばいいんじゃないの
372:デフォルトの名無しさん
19/03/01 01:02:08.44 8x0yRf06.net
それで何か解決するんですかね
結局view側からmutableLivedataに
アクセスできるんじゃないですかね
373:デフォルトの名無しさん
19/03/01 06:35:34.41 eJTnddJA.net
本当にやり方が思いつかないならもうちょっと経験値の高い先輩なりに相談してみよう
374:デフォルトの名無しさん
19/03/01 08:39:12.55 8x0yRf06.net
分からないならレスしないでください。うざいだけです
375:デフォルトの名無しさん
19/03/01 09:24:26.88 ajbNVKsu.net
動かしてないけどこんな感じ
import android.arch.lifecycle.*
import kotlin.reflect.KProperty
//保持用
fun <T> unmodifiableLiveData(d:LiveData<T>): LiveData<T> = Transformations.map(d){it}
class MutLiveWrap<T>(val lv:MutableLiveData<T>) {
val readonlyLv = unmodifiableLiveData(lv)
operator fun getValue(thisRef: Any?, property: KProperty<*>) = readonlyLv
}
val <T> MutableLiveData<T>.wrap get() = MutLiveWrap<T>(this)
//使用
class Test {
private val aWr = MutableLiveData<Int>().wrap
val a by aWr
fun f(){
val mutLv: MutableLiveData<Int> = this.aWr.lv
val roLv : LiveData<Int> = this.a
}
}
376:デフォルトの名無しさん
19/03/01 11:13:31.72 PhmT31GH.net
>>370
分かりません。
377:デフォルトの名無しさん
19/03/01 11:44:05.14 AdJjcFYH.net
>>370
技術力がないだけじゃなくて人間とし�
378:トも終わってるのな
379:デフォルトの名無しさん
19/03/01 12:41:01.41 yZJ4Zkhu.net
荒らしに返事するな!
そいつは前からいる、荒らしだろ。
相手をすると、この板に居つくだけ!
380:デフォルトの名無しさん
19/03/01 12:57:49.73 PhmT31GH.net
ま、しかし、このスレの場合は日頃は過疎ってるのでたまに荒しが来てくれた方がスレが活性化して落ちる心配がなくなるなw
381:デフォルトの名無しさん
19/03/01 16:06:36.33 XD1TRf4c.net
developer.android.comの最近のページはコードサンプルがKotlinとJava両方載ってるんだね
タブで切り替えるんだけど最初に表示されてるのはKotlin
382:デフォルトの名無しさん
19/03/01 16:54:26.44 ae30enpy.net
俺も動かしてないけどつくってみた
import androidx.annotation.MainThread
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.Observer
private class ReadOnlyLiveData<T>(private val liveData: LiveData<T>) : LiveData<T>() {
override fun setValue(value: T) { TODO("この関数を呼び出したとき、リードオンリーだから使えないよって教える。") }
override fun postValue(value: T) { TODO("この関数を呼び出したとき、リードオンリーだから使えないよって教える。") }
@MainThread override fun observe(owner: LifecycleOwner, observer: Observer<in T>) { liveData.observe(owner, observer) }
@MainThread override fun observeForever(observer: Observer<in T>) { liveData.observeForever(observer) }
@MainThread override fun removeObserver(observer: Observer<in T>) { liveData.removeObserver(observer) }
@MainThread override fun removeObservers(owner: LifecycleOwner) { liveData.removeObservers(owner) }
override fun getValue(): T? = liveData.value
@SuppressWarnings("WeakerAccess") override fun hasObservers(): Boolean = liveData.hasObservers()
@SuppressWarnings("WeakerAccess") override fun hasActiveObservers(): Boolean = liveData.hasActiveObservers()
}
fun <T> LiveData<T>.readOnly(): LiveData<T> {
if (this is ReadOnlyLiveData<T>) return this // もうすでにリードオンリー
return ReadOnlyLiveData(this)
}
383:デフォルトの名無しさん
19/03/02 06:14:14.54 qFBH5IQH.net
>>357
降順と昇順が混在する場合は compareBy または compareByDescending で Comparator 作って
それに対して thenBy または thenByDescending で追加させて行く方が楽だし速いと思う。
384:デフォルトの名無しさん
19/03/04 16:04:14.52 /4qbaGVQ.net
AnkoでBottom Sheetって使えますか?
385:デフォルトの名無しさん
19/03/08 09:22:28.79 Yj0eRJ2i.net
なんか面白い話題ないんかな。。
386:デフォルトの名無しさん
19/03/08 10:46:41.80 pv8HlopZ.net
君が面白くなりなさい。
387:デフォルトの名無しさん
19/03/08 13:24:56.87 AzqZJLRD.net
springがフルkotlinになるのはいつ?
388:デフォルトの名無しさん
19/03/08 18:01:21.77 rmua+rZ/.net
Exposed1.0が出るのはいつ?
389:デフォルトの名無しさん
19/03/10 12:52:23.09 t+kr7Jdy.net
sequenceってジェネレーターみたいなもの?
390:デフォルトの名無しさん
19/03/10 13:42:04.30 56gRJqyl.net
>>384
SequenceはIterableとほぼ同じ
違いは
Sequence: 遅延評価する (なのでジェネレーターも含む)
Iterable: 基本的には遅延評価でない (通常、実体はコレクション)
拡張関数も別れていて、例えば
Sequenceのmap は遅延評価するSequenceを返す
Iterableのmap はその場で全要素を処理してListを返す
391:デフォルトの名無しさん
19/03/11 00:27:22.19 +Nlo5Elt.net
ずばり説明が書いてあるページを発見した。
KotlinのListとSequenceって何が違うの?
URLリンク(qiita.com)
392:デフォルトの名無しさん
19/03/11 07:22:41.11 0boP2QX3.net
うんこは最後に出す方法
393:デフォルトの名無しさん
19/03/11 17:24:32.47 2ppgAkG/.net
げ、知らなかった。
ずっとIterableがStreamの代わりだとばかり。
PythonのSequenceと混同してた。
ならば、Iterableをあそこまでゴージャスにする必要があったのか?
394:デフォルトの名無しさん
19/03/11 18:33:50.09 JQuKUcCl.net
誰かの趣味だよきっと
395:デフォルトの名無しさん
19/03/11 18:35:48.60 oxE6wZ/Z.net
>>388
典型的なコレクション操作では遅延評価せずその場で全処理する方が早いため
意味付けが違うだけで、SequenceとIterableは同じ拡張関数を持ってるくらいの認識でOK
分かりやすさのため、あえて使い分けを用意しなかった
Javaの割り切り方もありだとは思うけどね
396:デフォルトの名無しさん
19/03/11 21:05:48.78 MDT71nit.net
SequenceはJava8のStreamと類似で、KotlinであえてStreamを使うべき機会はほとんどないからSequenceを使っておけば良いってことかな
397:デフォルトの名無しさん
19/03/11 23:18:53.36 +cXkYAGY.net
そしてSequenceって変数にぶち込んで使いまわせなかったっけ?
398:デフォルトの名無しさん
19/03/12 01:11:15.05 WllyGH1o.net
partitionのSequence版が無くて自作したわ
groupingByも遅延評価だけど使い方がむずい(毎回リファレンス読み直す)
399:デフォルトの名無しさん
19/03/12 08:13:05.73 z/76z4zm.net
>>391
pararellがないな。
はっきり並列化できる処理なら、Streamの方がJavaの言い回しを考慮した上でも直感的にかける。
400:デフォルトの名無しさん
19/03/12 12:54:36.68 6Uu2j9Xc.net
kotlin推しがgoを推薦
URLリンク(www.youtube.com)
401:デフォルトの名無しさん
19/03/12 14:55:36.01 7iAawGvK.net
python,go,kotlin全部推してるやん
402:デフォルトの名無しさん
19/03/12 15:14:48.22 iD2RJper.net
>>396
このレスは板内爆撃
本人かシンパかアンチか荒らしかいまいち判別できないので放置でよいよ
403:デフォルトの名無しさん
19/03/12 15:56:40.12 7iAawGvK.net
>>397
そうか。すまん
404:デフォルトの名無しさん
19/03/16 11:53:34.93 28C0KCt9.net
そもそもなんの権威でもないやろこの人
405:デフォルトの名無しさん
19/03/16 13:53:25.25 jFsymRCD.net
坊やだからさ
406:デフォルトの名無しさん
19/03/16 16:06:54.74 ksQagb59.net
俺が Kotlin 押しビデオ作って公開すればいいのか?
しかし Kotlin 初心者なので「いいですよ~。最高ですよ~」などと情緒に訴えて見ている側を洗脳しようとすることぐらいしかできない。
407:デフォルトの名無しさん
19/03/16 16:14:10.50 YxxaJZky.net
>>401
ジャップに布教するなら、みんな使ってますよ~乗り遅れますよ~仲間外れですよ~だけでいいよ
初心者のお前でも、有名企業でのKotlin採用事例を集めて紹介するくらいはできるだろう?
408:デフォルトの名無しさん
19/03/16 16:20:48.33 28C0KCt9.net
まぁでも、kotlin go あたりが推奨されるのはわかるけどな
今更phpとかおすよりかは説得力ある
409:デフォルトの名無しさん
19/03/16 17:20:10.49 ksQagb59.net
>>402
ああ。そうだな。
後は学生向けにこれさえできれば楽々就職みたいに言うと。
410:デフォルトの名無しさん
19/03/16 17:27:02.08 ksQagb59.net
やっぱこれも必要だろうな。
URLリンク(imgur.com)
411:デフォルトの名無しさん
19/03/16 17:28:59.66 ksQagb59.net
既にどこの国の誰だか知らんが絵を作っている人はいた。
URLリンク(imgur.com)
412:デフォルトの名無しさん
19/03/17 18:08:41.49 fOPvRjrc.net
PreferenceFragmentが非推奨になる
↓
代わりにandroidx.preference liblary使えって言われる
↓
日本語のガイドに説明なし
適当すぎんだろイライラ
413:デフォルトの名無しさん
19/03/17 21:15:53.12 t+AGMGYK.net
あんま関係ないけどmavenのkotlinプラグインで増分コンパイルされないのって仕様?
414:デフォルトの名無しさん
19/03/18 09:41:08.53 7YQXcQeA.net
>>407
ドキュメント読めば書いてあるし問題なくね?
415:デフォルトの名無しさん
19/03/18 17:50:47.00 VkTfSOi0.net
>>407
本気で言うけど、公式ドキュメント程度の英語は頑張って読んだ方がいいと思うよ。
416:デフォルトの名無しさん
19/03/18 19:24:24.40 6b7FslP4.net
まぁAndroidの公式リファレンスは言語切替をシステム化してるから
ドキュメントのバージョンが不一致なら警告表示するくらいすればいいのにとは思う
iOSの方は英語以外バッサリ切り捨ててる(最新は英語読めと明示してある)から
中途半端に惑わされることは無い
417:デフォルトの名無しさん
19/03/18 20:47:50.90 1gtRswz3.net
いつの間にかこんな入門書出てたよ。既にKindle版もある。
Kotlinプログラミング
URLリンク(www.amazon.co.jp)
418:デフォルトの名無しさん
19/03/19 03:22:14.95 j5JxWPYN.net
もっと可愛い名前にすれば良かったのに
swiftみたいな
419:デフォルトの名無しさん
19/03/19 03:33:14.71 EnTGEExM.net
古都リンちゃん
420:デフォルトの名無しさん
19/03/19 10:04:27.55 InXhSaoV.net
>>409
日本語でしか表示されないんだが
421:デフォルトの名無しさん
19/03/19 10:51:32.88 STa9vfc0.net
>>415
ページ一番下に言語切替がある
リファレンスページでは正常に切り替わらないことがあるからトップページで切り換えた方がいい
URLリンク(developer.android.com)
もしくはURLに言語を英語にする「?hl=en」を付ける
URLリンク(developer.android.com)
日本語の方はAndroidXの記述が無いな
URLリンク(developer.android.com)
422:デフォルトの名無しさん
19/03/19 12:07:55.88 t/u/FScK.net
Androidは公式で日本語ドキュメントあるのか
Kotlinのドキュメントは有志がやってたけどもうメンテしてないよな
423:デフォルトの名無しさん
19/03/19 12:30:24.38 BI7+7Q7/.net
君がやってくれ。たのんだぞ。
424:デフォルトの名無しさん
19/03/19 14:20:51.95 3khslMEX.net
Kotlin in actionとどっちの方がいいんだ
425:デフォルトの名無しさん
19/03/19 15:10:03.68 TG1sbbZQ.net
>>416
丁寧にすまんな……
426:デフォルトの名無しさん
19/03/19 17:12:09.49 7p2/yAlP.net
>>417
公式日本語ドキュメントは更新が遅いから読まない方がいいぞ
427:デフォルトの名無しさん
19/03/19 17:54:02.89 qahjbQKM.net
kotlin native応援してるんだけど何が一番貢献になるんやろか?
翻訳とか細かなライブラリ作ったりくらいなら時間かければできそうなんやけど、難しいことはできん。
やっぱ募金とかなんか?
428:デフォルトの名無しさん
19/03/19 18:07:06.75 VCt0hAH/.net
>>422
まずはなんとかしてVSCodeを潰そう
このままだとJetBrains無くなるよ
429:デフォルトの名無しさん
19/03/19 18:12:21.52 STa9vfc0.net
>>422
とりあえず公式リポジトリのスターとfork数増やして
kotlin nativeであることをアピールしたライブラリ作ればいいのでは
ただ、現時点ではパフォーマンスが残念だからお勧めしない
出来ることが違うとはいえ、ロジック部分は
JVMどころかKotlin/JS経由のnodeで動かすのより7~10倍くらい遅い
まだコンパイラの最適化をやってないのは救いだけど
俺はARC with cycle collectorがスループット下げてる可能性を気にしてる
もしそうなら最適化やっても思うほど改善しないんじゃないかと
430:デフォルトの名無しさん
19/03/20 08:09:47.58 vnEhpOgU.net
JSとかnativeとかどうでもええ。
いろいろ変更予定のあるJVMとAndroid対応だけしっかりやれや。
431:デフォルトの名無しさん
19/03/20 09:36:36.87 bT3jH/zR.net
JetBrainsの業績そんなに悪くないしむしろ伸びてるはずだけど
432:デフォルトの名無しさん
19/03/20 13:58:35.52 uYHRW+dq.net
とりあえずgitとintellijの更新はしとく。
作るとしたら何系のライブラリがいいと思う?
433:デフォルトの名無しさん
19/03/20 14:21:09.73 wkbxcvwm.net
>>427
自分で使うやつ
より正確に言うとプルリクエストが来たときに議論できる程度に思い入れのあるやつ
使いもしないのに聞きかじりで作るのはやめておいたほうがいい
434:デフォルトの名無しさん
19/03/20 15:39:59.54 uYHRW+dq.net
なるほど。何に思い入れがあったか思い出してくるわ。
ありがと
435:デフォルトの名無しさん
19/03/20 17:00:17.12 BuSIOCAA.net
むしろMicrosoftのほうが糞
436:デフォルトの名無しさん
19/03/20 20:08:58.41 TxjggMxz.net
>>423
ならライセンス買おうよ。
437:デフォルトの名無しさん
19/03/20 20:09:44.23 kvLAmSD0.net
そういえばXamarinネタ見なくなったな
438:デフォルトの名無しさん
19/03/20 21:34:30.03 /gKFWWq8.net
>>432
まあ知ってる人はごくわずかだから話題にしたくても出来る人はいないだろう。
439:デフォルトの名無しさん
19/03/22 15:40:33.53 L3xU9+dS.net
即荒しが何か書いてスレが活性化するかと思ったら完全に無反応。本当に少数なったのだな。合掌。
440:デフォルトの名無しさん
19/03/23 14:14:54.18 Bvojjkpo.net
Kotlin そのものの質問ではないがこのスレの方が分かる人が多いような気がするのでここに書き込む。
IntelliJ IDEA で Kotlin のプロジェクトを作ってその src フォルダで ~.kt を一つ作ってそこに main() が
あるだけなら良いんだけど、もう一つ ~.kt を作ってそこにも main() を作って、それぞれを別々に動かす
ということはできないのかな? どうやらそのままではできないようで、そのままやろうとすると個別にコンパイル
しようとしても同じ関数があると衝突してエラーになる。(最初に登録した方のソースは大丈夫。2番目に
登録した方の ~.kt ファイルのコンパイルでエラー)。
こういう使い方は想定されていないんだろうか? しかしこれができないと小さいプログラムが沢山あるような
プロジェクトは作れなくて個別に沢山のプロジェクトを作らねばならなくなる。仮にそういう風にしかできない
んだとしてもそれならばプロジェクトを束ねるようなその上位の何かは作れないのか?でないと同じ階層に
プロジェクトが沢山作られてしまい非常に使い辛い。
441:デフォルトの名無しさん
19/03/23 15:19:26.37 HXMNak6o.net
>>435
トップレベルのmain()が名前空間で衝突しているからコンパイルエラーになると思われる。
class MyApp {
companion object {
@JvmStatic fun main(args: Array<String>) {
のような書き出しでエントリーポイントを作ることも出来ますが、そういった方法では解決できませんでしょうか。
442:デフォルトの名無しさん
19/03/23 15:24:44.47 UK/ZLX81.net
>>435
A.kt に書けば AKt.class が、B.kt に書けば BKt.class が生成されるので
JvmNameとかpackage指定と合わないフォルダ下で名前衝突させたりしない限り
普通は衝突しないはずだけど
443:デフォルトの名無しさん
19/03/23 15:28:37.98 Bvojjkpo.net
>>436
どうもありがとう。
同じ関数がなければ main() がファイルごとにあっても大丈夫なことがわかった。
実行する時は main() の行頭の左側に出ている ? マークをマウスでクリックして実行またはデバッグすれば実行できた。
444:デフォルトの名無しさん
19/03/23 15:29:46.08 Bvojjkpo.net
>>437
ああ。package 付ける方法もあるな。試してないけどそれでもできそう。
445:デフォルトの名無しさん
19/03/23 15:34:11.63 Bvojjkpo.net
>>437
どうもありがとう。
できたよ。違う package にしておけば同じ関数があってもうまく行く(名前衝突しないんだから当然と言えば当然か)。
446:デフォルトの名無しさん
19/03/23 15:38:27.73 UK/ZLX81.net
いや、437はpackageが同じでもファイル名が別なら衝突しないという話だよ
447:デフォルトの名無しさん
19/03/23 18:56:11.23 Bvojjkpo.net
>>441
package が同じというのは2ファイルが package 指定なしの時と同じだよね?
それだとダメだったんだよね。IntelliJ がどういう風にコンパイルしているかの問題だろうけど。
448:デフォルトの名無しさん
19/03/23 18:58:25.76 z3jdsP7r.net
さすがにスレチ
449:デフォルトの名無しさん
19/03/23 19:07:58.43
450:Bvojjkpo.net
451:デフォルトの名無しさん
19/03/23 19:29:18.72 UK/ZLX81.net
>>442
>同じだよね?
同じ
ほんとにmainが衝突してる?
main以外のトップレベル関数が衝突してるだけか、
もしくはかなり古いKotlinコンパイラ(プラグイン)を使ってない?
>>443
これはKotlinコンパイラの仕様だから別にスレチではないよ
452:デフォルトの名無しさん
19/03/23 20:07:45.61 UK/ZLX81.net
>>442
ああごめん435読み直したら、衝突したのはmainじゃなくて「同じ関数」なのね
対応方法としてはmain以外をprivate funにする,
classまたはcompanion objectまたはobjectに入れる
A.kt, B.kt
-----
fun main(){
a()
f.a2()
}
private fun a(){}
private val f = object {
fun a2(){}
}
453:442
19/03/24 03:29:22.97 ynFGlX0q.net
>>446
どうもありがとう。
確かに private でも名前外に出さないからできるね。
454:デフォルトの名無しさん
19/03/26 10:19:16.34 E1WCPVyW.net
Kotlin/Nativeが遅い原因を逆アセンブルして調べてたらこの記事にたどり着いた
URLリンク(soywiz.com)
UpdateReturnRefやLeaveFrameのコストが重すぎる
1.3.20時点ではリリースビルドでも最適化はされていない
455:デフォルトの名無しさん
19/03/26 19:23:47.37 NbUyZWCM.net
誰でも頭が良くなる、プログラムが書けるようになる方法が発見される 56097
URLリンク(you-can-program.hatenablog.jp)
456:デフォルトの名無しさん
19/03/26 21:38:27.76 PDyA3k9g.net
>>449
そのためにわざわざ眼鏡買うのバカらしいから君ちょっと自分で試してみなさい。
それともブログ書いた本人だから試し済みか?
457:デフォルトの名無しさん
19/03/26 21:40:50.59 PDyA3k9g.net
ていうか既にプログラム書ける人ばかり来てるであろうスレでそんなの書かれても効果を実感できるやつはほとんど居ないだろうなあ。
458:デフォルトの名無しさん
19/03/26 21:53:14.49 hJyrjtJ9.net
>>450
>>397
459:デフォルトの名無しさん
19/03/29 20:35:19.53 abJt4WgD.net
今日Kotlin入門しサクッと文法をやった程度のものですがAndroidプログラミングの学習リソースを探しています
JavaでのAndroidプログラミング経験はありません
460:デフォルトの名無しさん
19/03/29 20:41:29.42 KqjpTu4V.net
今日やっていきなりかよ!
もうちょっとKotlin単体で粘れよ!他にやることあるだろ!
461:デフォルトの名無しさん
19/03/29 21:25:55.21 Jv6E4VJb.net
>>454
>>453はXamarinのAndroid開発のエキスパートかもしれん...
462:デフォルトの名無しさん
19/03/29 21:34:48.88 wVkKBlg0.net
>>453
Activityとは何か?と考えることにひたすら時間を費やす。
使用言語にかかわらずandroid開発はそれがすべて。
463:デフォルトの名無しさん
19/03/30 06:03:17.66 145z6i/c.net
ぼくなんかJavaちょっとかじっただけでAndroidに挑戦しちゃったわ
あの時はActivityがクラスな事すら分からずにテキスト見てその通り書いてたな……😅
464:デフォルトの名無しさん
19/03/30 13:35:02.89 M1S6T7Ca.net
Rってなんですか?とか<T>ってなんですか?とかでぜひ挫折して欲しい
465:デフォルトの名無しさん
19/03/30 15:12:50.70 b12H3n9S.net
挫折するような人はRとは?とか<T>とは?なんてこと考えたりしない
466:デフォルトの名無しさん
19/03/30 15:38:23.64 bfZyzxOj.net
>>453
「Android Hello World」でググる
何はともあれ、まず動かすのが最速の学習
467:デフォルトの名無しさん
19/03/30 20:04:51.02 5DG6z16F.net
RもTも知らんけど、コピペで動いてるからそれでいい
適当にやれば動く
Rが赤いときは、大抵xmlの打ち間違い
T?知らん
468:デフォルトの名無しさん
19/04/01 00:45
469::49.25 ID:Th3XB2nz.net
470:デフォルトの名無しさん
19/04/01 01:50:31.93 //wZRuJn.net
reifiedつよいよな
471:デフォルトの名無しさん
19/04/01 09:38:57.10 Fy4OwQz+.net
発音が難しいよね
472:デフォルトの名無しさん
19/04/01 16:18:36.04 yssFrFp/.net
コトリンのジェネリクスのTってC#のdefaut(T)みたいなのある?
473:デフォルトの名無しさん
19/04/01 17:10:11.92 Tc5+6fel.net
俺はC#を知らない
474:デフォルトの名無しさん
19/04/01 18:32:35.54 //wZRuJn.net
ない
csはint x=defaultってかけるみたいだけどkotlinは明示的に0で初期化しなきゃいけない
他の型でも同じ
475:デフォルトの名無しさん
19/04/01 19:41:02.24 no59bRT+.net
C#のdefaultは単なるシンタックスシュガーじゃなくて、実行時に型引数に応じた適切な値を生成してくれる機能
JavaやKotlinのハリボテジェネリクスでは原理的に不可能
476:デフォルトの名無しさん
19/04/01 21:02:06.63 jyzymMUT.net
やりたくなったことは何度かある
477:デフォルトの名無しさん
19/04/02 01:27:31.42 imTVpGqL.net
default(T)ないのか・・・
こうしてみたけど何か改良点ある?
例外時にnullも返せないし例外時に返すためだけに引数にt入れてるんだが・・・
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import com.fasterxml.jackson.module.kotlin.readValue
class SJson {
companion object {
inline fun <reified T> toObject(json: String, t: T): T {
val mapper = jacksonObjectMapper()
try {
val obj = mapper.readValue<T>(json)
return obj
} catch (e: Exception) {
SLog.e(e.message.toString())
return t
}
}
}
}
478:デフォルトの名無しさん
19/04/02 07:53:18.35 JAcM/MrS.net
>>470
単にnullを返したいということなら戻り値を T? にすればいい
479:デフォルトの名無しさん
19/04/02 08:46:54.35 e4jQj1uZ.net
ObjectMapper って使い回してよかったと思う
480:デフォルトの名無しさん
19/04/02 09:36:52.02 imTVpGqL.net
>>471
T?にしたらnull返せたわサンクス
>>472
なるほどね
481:デフォルトの名無しさん
19/04/12 13:13:10.63 EBXnKzt9.net
Kotlin 1.3.30 released
URLリンク(blog.jetbrains.com)
KAPT関連の機能追加など
符号無し整数配列の機能追加など
Kotlin/Native
mingw_x86サポート
CocoaPodsとの実験的統合機能
C相互運用改善
他
482:デフォルトの名無しさん
19/04/12 23:07:21.58 JX4xskgO.net
githubのrelease読んだけどめちゃくちゃ多かったな
483:デフォルトの名無しさん
19/04/13 02:06:40.85 hw3Eyeqa.net
ここからだとまだ 1.3.21 のままだね。
URLリンク(kotlinlang.org)
IntelliJ だと 1.3.30 にアップデートできたけど。
484:デフォルトの名無しさん
19/04/13 02:22:02.28 hw3Eyeqa.net
あれ? UInt 型の変数を String.format() で指定する時はどうするのかな?
%d は駄目だし。toString() してから %s 使えってか?
485:デフォルトの名無しさん
19/04/13 09:53:18.70 oqNH9LQH.net
>>477
そのまま%sでも使えるけどString.formatはそもそもKotlinでなく
Javaの機能(=Kotlin/JVM以外で使用不可)なので
単純な書式ならString Template使った方がいいよ
val n = 100u
println( "n=${n}" )
486:デフォルトの名無しさん
19/04/14 20:07:14.86 JuY/4ckm.net
UInt に関しては toLong() しちゃえば良いだけだと後で気づいたが、ULong の方はどうもならんね。
ULong.MAX_VALUE と Long.MAX_VALUE は10進数だと20桁と19桁で1桁違うので桁を考慮したフォーマットはこれを考慮する必要がある。
%20d とか %020d と書いても ULong については分かってくれないので自作する必要がある。
487:デフォルトの名無しさん
19/04/15 01:34:29.54 PzbTbQ3M.net
C#みたく${}内でフォーマットが使えれば一番なんだけどね…
488:デフォルトの名無しさん
19/04/15 17:43:26.97 3BglWTch.net
要望出せばそのうち出来るようになりそう
489:デフォルトの名無しさん
19/04/19 12:18:20.68 je8e8yU3.net
OracleJDK有料化でますますKotlin人口が増えるな
490:デフォルトの名無しさん
19/04/19 13:16:58.17 oa1dttvK.net
たしかASにjavaからkotlin変換がなかったっけ
あれで全て解決するような気がするんだけど
491:デフォルトの名無しさん
19/04/19 14:47:33.44 Z5+6w9VM.net
jdk有料化とかで騒いでいる奴いるけど
彼らにとってoraclejdkが唯一のjdkなのかな
492:デフォルトの名無しさん
19/04/19 14:57:46.07 /crv8Bf3.net
>>484
そうだよ
ついでに世界は五分前に始まった
493:デフォルトの名無しさん
19/04/19 17:40:48.18 xQzUZ1Zh.net
JDK有償化の話は何ら騒ぐようなことじゃなかったのに
Oracleの説明が手抜きだったからああなった
あとOpenJDK公式サイトの構成が酷く大部分がメンテされてないもの原因の一つ
例えば Groups > Adoption > Wiki > Adopt OpenJDK
494:デフォルトの名無しさん
19/04/19 17:46:39.55 xQzUZ1Zh.net
サイト管理者が違うんだろうけど
AdoptOpenJDKへのリンクをトップに置いとけばいいのに
OpenJDKのビルドインフラのメンバーが運用してるんだから
495:デフォルトの名無しさん
19/04/19 21:41:56.97 oXduz3ip.net
うちはAWSのやつに順次置き換えてるわ、名前が覚えにくいけど
496:デフォルトの名無しさん
19/04/19 21:50:42.00 aAzLpfHC.net
なによりJakartaEEが無能すぎる
497:デフォルトの名無しさん
19/04/19 22:34:55.70 hY3XsNGB.net
そこでjblendですよ
498:デフォルトの名無しさん
19/04/20 09:53:47.54 IaSD8GNU.net
>>453
おぉー同士。
当方、Visual Basicアプリ、iOSアプリの経験はあるが、Android経験ゼロです。
どうやらAndroidManifest.xmlに記載のActivityがプログラムのエントリーポイントだと解った所。
iOSとの比較で言えば、
Activity = ViewController,
wedgit = View,
Fragment = Container ViewController
AppDelegate = Application
って感じらしい。
499:デフォルトの名無しさん
19/04/20 11:40:44.23 IaSD8GNU.net
>>491
ちょいと違うかも!
Fragment = custom wedgit(user defined wedgit)
みたいだな。
さて、Java, Kotlin初心者なので、両者のコードの対応表が欲しいところだ。
500:デフォルトの名無しさん
19/04/20 11:43:32.64 IaSD8GNU.net
>>492
>Java, Kotlin
Overview of Kotlin and Comparison Between Kotlin and Java
URLリンク(www.xenonstack.com)
501:デフォルトの名無しさん
19/04/20 13:32:39.16 IaSD8GNU.net
>>493
JavaとKotlinの比較
URLリンク(xenos.world)
502:デフォルトの名無しさん
19/04/21 13:29:56.22 9kZK6Cbt.net
macOS Mojave 10.14.2
Android Studio 3.4
環境でBasic Activity Project作ってHello World表示するまで、かれこれ2hr費やした。
ハマりポイント
1. Gradle project sync failed. Basic functionality will not work properly.▶resolved with installing JDK 8u212
2. No Module Specified▶ガチャガチャやって解決。
503:デフォルトの名無しさん
19/04/21 13:36:48.96 9kZK6Cbt.net
ところでGradleって何だ?
daemonとして動いてファイルの変更を監視するmakeコマンドみたいなものか?
今、Gradle sync failed問題で困ってる。
新しくプロジェクト作ったら、Gradle sync failedってエラー吐いて、新規にapkってかModuleを作れない。なぜ??
504:デフォルトの名無しさん
19/04/21 13:52:47.18 qy+VhZ5w.net
>>496
何かというのはググってどうぞ
Gradle sync failed は Android Studio側の問題 (おそらくbuild.gradle生成処理の問題)
必要なライブラリのダウンロードが終わってないと発生するような印象
Android Studioを再起動してプロジェクトを新規作成しなおすとエラーが無くなったりする
505:デフォルトの名無しさん
19/04/21 14:11:36.76 Jrx6sgEL.net
gradle嫌い。
完全オフラインで開発作業したいのに、
ちょっとした事でネットアクセスを要求してくる。
506:デフォルトの名無しさん
19/04/21 14:14:25.40 RKX/L/5n.net
GradleKotlinDSL使ってるけど情報少なすぎてハマるからオススメしない
507:デフォルトの名無しさん
19/04/21 15:35:20.45 9kZK6Cbt.net
>>497
AndroidStudio3.4(17 April 2019)には問題ありと判断して、3.2へdegradeしてみた。
Gradle sync failed issueは初回Studio起動時に発生するも、指示に従って、build toolの最新版をinstallしてみた。
その後は3.2では問題発生せず!
ちなみに3.3はArchiveに発見できず。September 2018のAndroidStudioだが、まあ、良いんじゃ無いかぁ。
508:デフォルトの名無しさん
19/04/21 15:53:07.87 9kZK6Cbt.net
くっそ!
AndroidStudio3.3は、English pageにあるのかぁ。
日本語ページに無いなんて!
どうやら、日本は置いてけぼりって事だ。
509:デフォルトの名無しさん
19/04/21 16:45:42.90 9kZK6Cbt.net
AndroidStudio3.4
AndroidStudio3.2
AndroidStudio3.3.2
の順で試してみた。Mojave 10.14.3で。
Gradle sync failedが発生しないのは、3.2だった。
3.3.2, 3.4は発生する。
何をやっているかと言うと、
AndoroidStudioをinstallした直後に、新規プロジェクト(Basic Activity)を作った直後の挙動を調査しているのだ。
プロジェクト作成直後にGradle sync failedってよろしく無いよねぇ。
AndroidStudioをrestartしてもこの症状は解消しない。
510:デフォルトの名無しさん
19/04/21 16:51:51.27 qy+VhZ5w.net
>>502
3.3以降で、エラーになったプロジェクトを捨てて
再度新たにプロジェクトを作っても発生する?
511:デフォルトの名無しさん
19/04/21 17:41:08.01 9kZK6Cbt.net
>>503
します。ただし、3.4の場合、何かのひょうしに解決されて、Gradle sync failedってのが出なくなります。
idea.logファイルに記録されてるWarningはこんな感じ。
WARN - n.GradleOrderEnumeratorHandler - Root project path of the Gradle project not found for Module: 'App03'
512:デフォルトの名無しさん
19/04/21 18:18:34.43 2Pn5K2oC.net
そのへんのエラーは冗談比喩抜きで「起動しっぱなしで放っておいたら数日後に直る」経験しかない
まあどっかの何かが新しい何かに何かしてなくて放置してると何かが何かなって何かするんだと思う
513:デフォルトの名無しさん
19/04/21 18:20:30.52 9kZK6Cbt.net
>>504
>Root project path of the Gradle project not found
解決か?
~/Library/Preferences/AndroidStudio3.4/
~/Library/Preferences/AndroidStudio3.3/
を消してやると、Gradle Sync failed Issue解決!か?
今の所、上手く動いてる.
次は、Command Lineでkotlincコマンドを実行したいのだが、AndroidStudioをinstallしただけではダメなのだろうか?
In Android Studio download page, the basic Android tools below are included in Android Studio.
らしいのだが?
514:デフォルトの名無しさん
19/04/21 18:36:10.73 9kZK6Cbt.net
試しに、
URLリンク(developer.android.com)
ここからサンプルプロジェクトをdownloadしてみた。
なんと、AndroidStudio付属のGradleとは異なるバージョンのGradleのinstallが始まった。
サンプルプロジェクト毎にTarget API Levelが異なるために、それ用のGradleがinstallされるみたい。
AndroidStudio3.2, 3.3.2, 3.4をinstallしたが、しばらく3.4を使ってみる。
515:デフォルトの名無しさん
19/04/21 18:38:19.48 9kZK6Cbt.net
>>505
Gradle daemon(プロセス名java)をkillしてやれば、Sync failed Issueは解決するのかも!
516:デフォルトの名無しさん
19/04/21 18:48:08.38 2Pn5K2oC.net
すまん触った
517:デフォルトの名無しさん
19/04/21 19:56:32.73 9kZK6Cbt.net
developer.android.comからサンプルをdownloadして動かしてたら、Gradle daemonが3つも動いてる事になった。
各々違うVersionのGradleらしい。
どうやら、androidの開発環境の歴史的変遷から、ややこしい事になってるみたいだ。
build.gradle(Module:app)とbuild.gradle(Project: kotlinApp)の2つあったり。
518:デフォルトの名無しさん
19/04/21 21:42:46.66 ePLxajCC.net
連投しているところ悪いけど、その手の日記ならQiitaにでも書いておいてほしい。
ていうか書くまでもなくそこに答えが書いてある。
519:デフォルトの名無しさん
19/04/21 22:54:30.74 JMkKpOJG.net
まずはAndroid関係ないシンプルなGradleプロジェクトを作ってみることをお勧めする。基礎知識が欠落しすぎてて余計な回り道しかしてない。
よほど込み入ったことをしない限りそんなに複雑なものではないから。
少なくとも歴史上生まれてきた数々のビルドツールの中では1番マシ。
520:デフォルトの名無しさん
19/04/21 22:54:39.59 8IQ6w5E8.net
.gladleのキャッシュとかいろいろあるけどねえ
ガチャガチャやってりゃ直るからgladleは優しいよな
521:デフォルトの名無しさん
19/04/21 22:55:48.78 JMkKpOJG.net
それ。ぶっ壊れたと思っても適当になんかしてりゃ直ってくれるから優秀。
522:デフォルトの名無しさん
19/04/21 23:56:09.92 +YkyhY+W.net
まったく毎度毎度グーグルの仕事はほんんんんと雑だな
523:デフォルトの名無しさん
19/04/22 00:58:40.19 47gIWCEb.net
fragmentのbindingってlateinitでvarにするのとby lazyでvalにするのとどっちが正解ですか
524:デフォルトの名無しさん
19/04/22 03:51:49.53 SyBBal55.net
>>509
はい
525:デフォルトの名無しさん
19/04/22 10:56:56.63 QiOq/xsC.net
>>512
thx
found great articles in Qiita concerning Gradle build tool.
526:デフォルトの名無しさん
19/04/22 12:17:09.85 iCdpr57v.net
JVMが有償化したらおまえら阿鼻叫喚
527:デフォルトの名無しさん
19/04/22 12:49:18.33 +g+F61Q1.net
1年くらい前は確かに阿鼻叫喚だったけど今となってはもう誰も問題だと思ってない
528:デフォルトの名無しさん
19/04/22 13:54:04.36 5CpOs8vM.net
>>519
JVM, JRE, JDKが今どんな状況か分かってなさそう
529:デフォルトの名無しさん
19/04/22 14:54:26.97 3J9RCiSz.net
>>521
詳しく頼む
530:デフォルトの名無しさん
19/04/22 16:23:17.22 QiOq/xsC.net
>>522
Android Studio 3.4
Build #AI-183.5429.30.34.5452501, built on April 10, 2019
JRE: 1.8.0_152-release-1343-b01 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
macOS 10.14.3
これでどう?
531:デフォルトの名無しさん
19/04/22 16:29:37.09 QiOq/xsC.net
俺、AndroidStudio3.4をinstallしてからGradle sync failed問題を解決しようとして、Oracle JDK8u212ってのをinstallしちまった。
AndroidStudio3.4にはOpenJDKってのが入ってるのか?
Oracle JDK8u212ってのはuninstallしても良いのか?
ちなみに、Command Lineでjava -vすると
>java -version
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)
532:デフォルトの名無しさん
19/04/22 16:34:09.84 952sQ1R
533:S.net
534:デフォルトの名無しさん
19/04/22 16:35:59.31 QiOq/xsC.net
ちなみにgradleってファイル名のbash scriptがAndroidStudio3.4には入っていて、
1. $JAVA_HOME
2. which java
上記からjavaコマンドの場所を検索してgradle-launcher-5.1.1.jarを動かしてるみたいなんだけど。
535:デフォルトの名無しさん
19/04/22 16:37:13.18 952sQ1RS.net
で、何がわからなくて何が聞きたいの?
536:デフォルトの名無しさん
19/04/22 16:40:22.54 QiOq/xsC.net
>>525
なるほど!
ってことは、Oracle版JDKはuninstallしてもOK?
以下のフォルダをごそっと削除してしまいたいんだけど。
> /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/jdk1.8.0_212.jdk/Contents/Home
537:デフォルトの名無しさん
19/04/22 16:49:59.02 952sQ1RS.net
>>528
Android Studioを動かすだけなら消しちゃって大丈夫。
そのパソコンで他にjavaに依存している何かを動かしてるなら消しちゃダメ。
538:デフォルトの名無しさん
19/04/22 18:10:15.79 QiOq/xsC.net
>>529
thx
javaに依存してる何かは、無いです。
kotlinc(Kotlin Compiler)コマンドを使いたいので
>brew install kotlin
ってコマンドを打とうとしてます。
kotlinがJREを必要とするなら、JREも同時にbrewがinstallするでしょう。
だったら、消さずに残すのが良いでしょうか?
539:デフォルトの名無しさん
19/04/22 19:06:49.70 R7Rys8j6.net
幼稚園児が増える季節か
540:デフォルトの名無しさん
19/04/22 19:49:54.02 BvK+7rjz.net
この前も別の初心者がkotlincで詰まってたんだけど、どこかの有名な入門サイトがコマンドライン推奨でもしてるの?
正直kotlin書くならIDE前提だろうからコマンドラインでコンパイラの使い方を覚える必要なんて全くないと思うんだが。
541:デフォルトの名無しさん
19/04/22 20:19:08.99 SyBBal55.net
>>532
同じ人なのでは
n=1
542:デフォルトの名無しさん
19/04/22 20:20:41.47 47gIWCEb.net
dagger
543:デフォルトの名無しさん
19/04/22 20:31:59.51 QiOq/xsC.net
>>532
うっそーん。
コマンドラインでチョコっと、コードを試したいってこと無い?
IDEよりVimが好きな俺だけか?
ようやく、Quickrun.vimが動くようになって、今コレ読んでるところ。
はじめてのKotlin。Javaと比較してみた
URLリンク(qiita.com)
30分で覚えるKotlin文法
URLリンク(qiita.com)
544:デフォルトの名無しさん
19/04/22 20:41:55.57 47gIWCEb.net
それならブラウザ上で実行できるplayground的なものが公式にあったはず
545:デフォルトの名無しさん
19/04/22 20:49:23.39 952sQ1RS.net
ちょっと書いてちょっと動かすにしてもIntelliJでRunした方がいいしな、デバッガが超優秀だし
Vimで書いてコマンドラインで実行ってのは確かに昔Javaを勉強した頃はやったけど、
今となっては出汁をとるのに鰹節を削るところから始めるような古めかしさを感じる
546:デフォルトの名無しさん
19/04/22 20:51:00.58 952sQ1RS.net
まあ好みだからそれがやりたいなら良いとは思うよ
仕事で新人がそんなことで詰まってたらやんわり注意するかもしれんけど
547:デフォルトの名無しさん
19/04/22 20:51:15.45 MftVaIwk.net
そういうときはREPL使ってる
548:デフォルトの名無しさん
19/04/22 21:14:37.90 j5GMJ/X8.net
単一ファイルを少し変更したいときはエディタ。
それ以外はIDEを使う
549:デフォルトの名無しさん
19/04/22 21:42:39.28 QiOq/xsC.net
>>537
三大Java IDEは気にはなってるけど、今の所リソース食いそうで躊躇してます。
今の所、Referenceの検索容易性から俺にはVimかなぁ。
デバッグ環境はpoorかな。
550:print文を埋め込むしか、今の所は手が無しかな。 デバッグが必要ならAndroidStudio起動して、なおかつKotlin Scriptに変換して動かす事にします。 ScriptじゃないKotlinコードをAndroidStudioで動かす事は出来ないのかな?よく解らん。 Xcodeならplayground作れるんだが。
551:デフォルトの名無しさん
19/04/22 21:53:50.10 BvK+7rjz.net
君、謎の行動力がありそうでそれはいいんだけど、
本当に何から何まで無駄なことばっかりやってるからまず最初に調べる癖をつけたほうがいい
この世界は一にも二にもまずは調べることが何より大事
552:デフォルトの名無しさん
19/04/22 22:12:50.79 5CpOs8vM.net
KotlinやるならIntelliJ一択
あとガワが違うだけでAndroid Studioの中身はIntelliJ
※Android以外のプロジェクト作成など、一部の機能を非表示にしている
553:デフォルトの名無しさん
19/04/22 22:19:17.89 BvK+7rjz.net
Kotlin勉強したいならIntelliJの無償版使うのが1番おすすめだねえ
ちなみにAndroid Studio動かすのと消費するリソースは同じ、何せほぼ同じものだし
554:デフォルトの名無しさん
19/04/22 22:23:01.40 5CpOs8vM.net
>>522
・JVMはJREの一部、JREはJDKの一部
・Java9以降「システムへの単一JREのインストール」は無くなっており、
JDKから各アプリの同梱用JREを生成する (jdeps/jlink)
・OracleJDKに含まれるJVMは既に有償化されている
・OpenJDKに含まれるJVMは今後も有償化されることは無い
555:デフォルトの名無しさん
19/04/22 23:33:08.26 2FYuav9u.net
>>545
ありがとう
十分に理解できました
556:デフォルトの名無しさん
19/04/23 12:05:16.04 3Q52IgbA.net
>>535
>はじめてのKotlin。Javaと比較してみた
>URLリンク(qiita.com)
>
>30分で覚えるKotlin文法
>URLリンク(qiita.com)
もういっちょ!
Kotlinまとめ - 文法詳解 - クラスとそのメンバ
URLリンク(qiita.com)
557:デフォルトの名無しさん
19/04/23 13:16:20.26 gv0SOq8d.net
>>535
ある。ちょこっとする時は例えWindowsで IntelliJ 起動中でも Linux サーバ側でREPLやるな。
なんでかというと IntelliJ のREPLのウインドウはなんか出力がすぐ出なかったりでおかしいから。
その他短すぎるプログラムのためにわざわざプロジェクト作ったり packge 作るのもアホらしい時とか。
558:デフォルトの名無しさん
19/04/23 14:13:43.00 3Q52IgbA.net
Android Studio残念ポイント!
1. Android Projectしか開くことができない。
2. Hello Worldするhello.ktを開くことができない。
なんで?そう言う時は、IntelliJ使えってことか?▶なんだろうなぁ。
559:デフォルトの名無しさん
19/04/23 14:52:10.33 67h9+wNp.net
>>548,549
JUnit使う手がある。
しかも、main毎にファイル分けるとかしなくていいし。
560:デフォルトの名無しさん
19/04/23 14:54:14.57 TrDrz5+t.net
>>548
IntelliJのあれはまともに動いてないんじゃないかとずっと思ってる
まともに使えてる人いるのだろうか…?
561:デフォルトの名無しさん
19/04/23 15:47:52.74 KnPjeA9Q.net
Intの変数名をintってするのってまずい?
val int : Int = 0
こういうの
562:デフォルトの名無しさん
19/04/23 15:52:03.96 3Q52IgbA.net
>>548
REPLねぇ。
Ruby, JavaScript(Node.js), SwiftのREPL環境を使ったことあるけど、Reflection機能が充実している言語(ruby)以外、イマイチだなぁ。
コードの編集も不自由だし。
あんた、本当にLinux側でREPLする事あるの?
563:デフォルトの名無しさん
19/04/23 15:54:20.98 3Q52IgbA.net
>>552
怖いなぁ。そのコード。
俺、さっき、setNameってメソッドを作ったら、clashしてるって怒られた。
clash = conflict って意味らしい。
java.lang.StringのsetNameメソッドとコンフリクトしてるから、コンパイルしないんだって。
564:デフォルトの名無しさん
19/04/23 16:06:01.49 KnPjeA9Q.net
565:そういうことあるのか でもIntがintじゃないのってintを変数名で使ってもいいよっていう意思を感じるんだよなあ val hoge : Hoge ってすることを考えると val int : Int も自然な気がする
566:デフォルトの名無しさん
19/04/23 16:09:50.49 KnPjeA9Q.net
ああでもjavaは予約語でintだめなのか
やっぱりやめておこう
567:デフォルトの名無しさん
19/04/23 16:25:21.03 xD8uuYM0.net
そもそも逆コンパイルしたソースじゃないんだから
意味のある変数名付けなよ
568:デフォルトの名無しさん
19/04/23 16:31:00.98 3Q52IgbA.net
macOS10.14.3
AndroidStudio3.4
環境です。API Referenceを参照するには、どうすれば?
Command-Jで起動するかと思いきや?何も起こらないっす。
Webサイトへ行かないとダメなのかな?
569:デフォルトの名無しさん
19/04/23 17:37:07.37 gv0SOq8d.net
>>553
ちょっと試す時とかによく使うよ
570:デフォルトの名無しさん
19/04/23 17:41:27.91 3Q52IgbA.net
>>559
thx
そっすか。
571:デフォルトの名無しさん
19/04/23 18:02:43.25 3Q52IgbA.net
>>558
see the hit result of Help>Search(Documentation).
You can retrieve the documents by ctrl-J@macOS as well.
572:デフォルトの名無しさん
19/04/23 19:19:13.65 IWDMUBZh.net
>>555
とりあえず変な癖をつける前に『リーダブルコード』を読んでくれ、頼むから
573:デフォルトの名無しさん
19/04/23 19:47:01.75 hcUTeQ5O.net
リーダブルコード読みやすいしわかりやすいし為になるし
書いたやつ神
574:デフォルトの名無しさん
19/04/23 19:49:26.39 3Q52IgbA.net
>>562
>リーダブルコード
この本そんなに良い本なのか?
ペラペラ見たことあるけど、すでに知ってること、というか、実践していることしか書いてなかった。
575:デフォルトの名無しさん
19/04/23 19:52:05.70 Ky48Nwl1.net
>>564
嘘だ
576:デフォルトの名無しさん
19/04/23 20:08:14.43 gv0SOq8d.net
>>564
じゃあその本に書いてないことが書かれた本を出してくれ。Kindle版だけでもいいから。
577:デフォルトの名無しさん
19/04/23 20:16:21.90 IWDMUBZh.net
>>565
知っていることを再認識させてくれる良書ではある
578:デフォルトの名無しさん
19/04/23 20:18:24.37 IWDMUBZh.net
何でIDが同じになるんだよ
同じプロバイダーなのか
579:デフォルトの名無しさん
19/04/23 20:22:11.04 gv0SOq8d.net
たまーに同じID出ることあるな。ものすごく希だが。
きっと今日は良いことあるよ。あと3時間40分ぐらいで終わるけど。
580:デフォルトの名無しさん
19/04/23 20:22:12.06 3Q52IgbA.net
>>565
嘘じゃない。
ああぁ。俺は間違ってないんだな。という感じ。
まあ、詳細に読んだわけでは無いし、プログラマが知るべき97のこと、って本にも似たような事が書いてある。
Matzも「名前重要」なんて事を、97本に寄稿している。
プログラミング作法、なんかの方がよっぽど良かったな。俺には。
581:デフォルトの名無しさん
19/04/23 20:24:15.75 3Q52IgbA.net
>>569
って事はHash algorithmがpoorってこった。
582:デフォルトの名無しさん
19/04/23 20:25:36.05 B8eC+d1i.net
コードコンプリート
583:デフォルトの名無しさん
19/04/23 20:27:52.73 3Q52IgbA.net
>>570
>Matzも「名前重要」
私の設計上の座右の銘は「名前重要」です。あらゆる機能をデザインする時に、私はその名前にもっともこだわります。
courtesy of Matz
584:デフォルトの名無しさん
19/04/23 20:29:32.04 IWDMUBZh.net
プログラミング作法
プログラム書法
ソフトウェア作法
全てブライアン・カーニハン御年77歳の名著
585:デフォルトの名無しさん
19/04/23 20:31:32.66 gv0SOq8d.net
>>571
まあそういうことだな。
こんな掲示板でrichにしてどうするって感じはするが。
586:デフォルトの名無しさん
19/04/23 20:32:56.33 3Q52IgbA.net
>>566
じゃぁ、一つ俺の考え方を!
狭いスコープの中を生きる変数は、名前が短くても良い。
e.g. str1 = “OK”
広いスコープの中を生きる変数の名前は、長い名前が必要。
e.g. numberOfBooks = 100
何時いかなる時も、意味ある変数名をつけるのは、俺は反対だ。
変数名を考える事に、時間が惜しい時もある。
587:デフォルトの名無しさん
19/04/23 20:33:50.86 PyZ6tY2R.net
拡張プロパティに値セットする方法ある?
588:デフォルトの名無しさん
19/04/23 20:36:26.55 gv0SOq8d.net
やはりプログラミングも茶道とか華道とかと同様にプログラミング道を作ってわびさびが必要な時代が来たのかも知れないな。
589:デフォルトの名無しさん
19/04/23 20:36:27.27 IWDMUBZh.net
>>576
そ、ループ変数なんて i, j, k, ....nで良いやん
590:デフォルトの名無しさん
19/04/23 20:38:43.46 PyZ6tY2R.net
でもkotlinでforとか使わなくね?
591:デフォルトの名無しさん
19/04/23 20:42:02.64 gv0SOq8d.net
>>576
変数名を日本語にすれば良い。
ソース丸ごと世界に公開する予定がないならその方が分かりやすくて良い。
日本語知らないやつには難読化して軽くプロテクトが掛かった状態にもなる。
592:デフォルトの名無しさん
19/04/23 20:54:10.92 3Q52IgbA.net
>>581
昔、英語が出来なかった時には、
kabuPrice
とか
kabuka
なんて恥ずかしい名前使ってたけど、
今では、
sharePrice
でないと、code reading時にストレス感じるわぁ。
593:デフォルトの名無しさん
19/04/23 20:57:09.18 gv0SOq8d.net
漢字使え漢字
594:デフォルトの名無しさん
19/04/23 21:02:15.89 3Q52IgbA.net
val 感じ = "感じ"
print(感じ)
なんと、warningは出るが、実行可能。
595:デフォルトの名無しさん
19/04/23 21:05:59.98 3Q52IgbA.net
Qiita見ながらKotlin修行中だけど、
Jump Command便利そう。
return@forEach
continue@loop
return@loop
とか言うやつ。
これSwiftに欲しい。
596:デフォルトの名無しさん
19/04/23 21:15:06.63 3Q52IgbA.net
そんなことより、API referenceってかDocumentをofflineで見る手段、どうしてる?
Zeal, Velocity, Dashなんかを使ってるの?
Android StudioでAppCompatActivetyを引くと
android.support.v7.app.AppCompatActivity public AppCompatActivity()
Gradle: com.android.support:appcompat-v7:28.0.0@aar
たったコレだけしか表示されないっす。
597:デフォルトの名無しさん
19/04/23 21:32:38.61 bGCgvaJg.net
>>517
俺も謝っておく
触ったすまん
598:デフォルトの名無しさん
19/04/23 21:53:05.69 strBUBex.net
>>585
便利な反面1歩間違えると悲惨なコードになりそうだな
599:デフォルトの名無しさん
19/04/23 22:46:19.69 B8eC+d1i.net
尻でも触ったのか
600:デフォルトの名無しさん
19/04/23 23:21:01.87 IWDMUBZh.net
>>585
Kotlinにあるでしょそれ
URLリンク(kotlinlang.org)
601:デフォルトの名無しさん
19/04/23 23:23:43.15 IWDMUBZh.net
ごめん間違えた、SwiftにあるからKotlinに欲しいって読み違えた
Xamarinのライセンス買ってくる
602:デフォルトの名無しさん
19/04/24 05:30:04.16 BhgQi2cO.net
悲惨なコードとは?
603:デフォルトの名無しさん
19/04/24 05:38:27.15 MHxaAVIF.net
goto文みたいに次にどこに行くのか読みにくいって意味じゃないかな
そんなことはないけどね
604:デフォルトの名無しさん
19/04/24 05:51:11.02 kB2a7+Os.net
変数名漢字って結構有りだと思う
平均からすれば英語かなり必死に勉強したほうだと思うけど、ネイティブからすれば変な英語使ってるって自覚あるし
ネイティブ的な感覚がないから、命名には常に苦労する
もちろん特定用途でしか使えない手法だけど、やっぱり母国語ってわかりやすいよね
英語圏のやつらにスーパハカーが多いのはそういう理由もあるよな、母国語でプログラムできるのうらやましいわ
605:デフォルトの名無しさん
19/04/24 07:33:38.62 ZqBzQREh.net
>>594
英語人口20億、英語母語5億
くらいじゃない?
チェコ、ロシア、ルクセンブルグにHacker多い印象が俺にはある。
606:デフォルトの名無しさん
19/04/24 11:18:15.23 ZqBzQREh.net
Constructorの書き方がムズイ。
primery, secondary constructorとか、Swiftには無いし。
Kotlinスタートブック、はしばらく様子見。今の所買わない方向で…
だって、2016年の本って、情報が古そうだし。
607:デフォルトの名無しさん
19/04/24 12:11:30.51 f6AiwYyw.net
そのうち在日ユダヤが「日本人にベーグル盗まれた」なんて狂言やりそう
608:デフォルトの名無しさん
19/04/24 12:20:40.85 ymPUK1bE.net
>>594
日本語固有のややこしい漢字の名称を無理やり英語にするよりはそのまま使った方が可読性もはるかにいいわな
何か不都合が起きたらIDEでリネームすりゃいいだけの話だから、全然ありだと思う
俺はテストケース名は日本語がんがん使う