JetBrainsが開発した期待の新言語Kotlinについて語りましょう
https://kotlinlang.org
探検
Kotlin [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2016/02/27(土) 01:46:01.68ID:Ag8w7//2
663デフォルトの名無しさん
2017/09/23(土) 16:43:59.09ID:JwqPmi7Z COW信者乙
さておき、入れ物のStringインスタンスをnewするのはやめたいよな
中身をコピーするかどうか以前にJVM上のインスタンスの確保が重たいんだよ
そして、GCで回収して回る対象個数が増えて重たくなるのは中身のコピー有無は関係ないんだよ
さておき、入れ物のStringインスタンスをnewするのはやめたいよな
中身をコピーするかどうか以前にJVM上のインスタンスの確保が重たいんだよ
そして、GCで回収して回る対象個数が増えて重たくなるのは中身のコピー有無は関係ないんだよ
664デフォルトの名無しさん
2017/09/23(土) 17:42:00.77ID:8bsZ0VcP かといって日頃パフォーマンスに影響するような膨大な処理をさせてないので気にならない
665デフォルトの名無しさん
2017/09/23(土) 20:38:20.82ID:3qopZopL666デフォルトの名無しさん
2017/09/23(土) 21:43:26.21ID:Kp7vI9MI 気に入らないところが、JavaやScalaを使い込んだ人視点で、このスレレベルからみるとむしろズレてるね
667デフォルトの名無しさん
2017/09/23(土) 22:33:09.90ID:lJM5VEju >>662
そういったイミュータブルな文字列を表現するデータ構造として Rope がある
・Rope (data structure) - Wikipedia
https://en.wikipedia.org/wiki/Rope_(data_structure)
・ロープ: 理論と実践 - IBM developerWorks / Java technology
https://www.ibm.com/developerworks/jp/java/library/j-ropes/
・最終報告 - Ropeを用いたRuby処理系の高速化に関する報告
http://www.spinute.org/ruby/gsoc2016/japanese.html
特に「Stringの一部分を取り出して新しいStringを作る」という
substring 操作に関しては、上記の Wikipedia のページからリンクされている
原論文(英語)の中で疑似コードを使って丁寧に解説されている
で、肝心の Kotlin 実装は知らない(汗
そういったイミュータブルな文字列を表現するデータ構造として Rope がある
・Rope (data structure) - Wikipedia
https://en.wikipedia.org/wiki/Rope_(data_structure)
・ロープ: 理論と実践 - IBM developerWorks / Java technology
https://www.ibm.com/developerworks/jp/java/library/j-ropes/
・最終報告 - Ropeを用いたRuby処理系の高速化に関する報告
http://www.spinute.org/ruby/gsoc2016/japanese.html
特に「Stringの一部分を取り出して新しいStringを作る」という
substring 操作に関しては、上記の Wikipedia のページからリンクされている
原論文(英語)の中で疑似コードを使って丁寧に解説されている
で、肝心の Kotlin 実装は知らない(汗
668デフォルトの名無しさん
2017/09/23(土) 22:39:08.56ID:XK13+/v0669デフォルトの名無しさん
2017/09/24(日) 02:01:15.02ID:GOJB25/b >>666
文法が気に入らないって言ってるだけでJavaやScalaを使い込んでるようにも見えんがな
JVMの仕様上、JavaやScalaの方が最適化されてるからKotlinが気に入らないって話かと思って読んだらもっと浅い話だった
Kotlinの文法が良いってこのスレは賞賛してるから論点はこのスレと合致してる
ただ、Kotlinの文法がダメって記事と、Kotlinの文法がイイってスレとで感想が真逆なだけだ
文法が気に入らないって言ってるだけでJavaやScalaを使い込んでるようにも見えんがな
JVMの仕様上、JavaやScalaの方が最適化されてるからKotlinが気に入らないって話かと思って読んだらもっと浅い話だった
Kotlinの文法が良いってこのスレは賞賛してるから論点はこのスレと合致してる
ただ、Kotlinの文法がダメって記事と、Kotlinの文法がイイってスレとで感想が真逆なだけだ
670デフォルトの名無しさん
2017/09/24(日) 02:17:41.07ID:vbDFNvhm >>655
ものすごい→ものっそい
ものすごい→ものっそい
671デフォルトの名無しさん
2017/09/24(日) 09:32:49.28ID:UrGEC0gh tornadoFXはDSLのダメなとこ出てるねえってだけだから、それ気にならないならいいんじゃないかな
足りない情報は君が発信するんだ
足りない情報は君が発信するんだ
672デフォルトの名無しさん
2017/09/24(日) 10:29:34.48ID:tu0D//Rh Kotlin は、Groovy, Scala, Ruby の影響を受けている
Ruby を関数型にした、Elixir を意識している。
関数型では、デフォルトが、immutable
Ruby を関数型にした、Elixir を意識している。
関数型では、デフォルトが、immutable
673デフォルトの名無しさん
2017/09/24(日) 14:15:58.51ID:q8xwt5Nv ねえねえおにいちゃん
ミュータブルリストの先頭から要素を削除して詰める(戻り値不問)って行為をいちばんうまくできる書き方ってなあに
ミュータブルリストの先頭から要素を削除して詰める(戻り値不問)って行為をいちばんうまくできる書き方ってなあに
674デフォルトの名無しさん
2017/09/24(日) 14:31:53.81ID:c233uqnI >>673
removeAt() じゃないの?
removeAt() じゃないの?
675デフォルトの名無しさん
2017/09/24(日) 14:32:52.09ID:c233uqnI コマンドラインでこんな風にできたが
>>> val a = mutableListOf(1, 2, 3)
>>> a
[1, 2, 3]
>>> a.removeAt(0)
1
>>> a
[2, 3]
>>> val a = mutableListOf(1, 2, 3)
>>> a
[1, 2, 3]
>>> a.removeAt(0)
1
>>> a
[2, 3]
676デフォルトの名無しさん
2017/09/25(月) 02:59:33.77ID:JjTJVibn kotolinってc#で言うpartial classみたいなことできないのかな?
実装を分けたい
実装を分けたい
677デフォルトの名無しさん
2017/09/26(火) 20:47:43.28ID:fZxiOEU0 fun main(args : Array<String>){
test(){
println("test!")
}
}
fun <T> test(body: () -> T ) : T {
println("START")
try{
return body
}
finally{
println("END")
}
}
これで
(returnの行): error: type mismatch: inferred type is () -> T but T was expected
ってエラー出るのなんでですか
まだどっかに<T>って書かないとダメですか
STARTって表示してtest!って表示してENDって表示するようにしたいんですが
test(){
println("test!")
}
}
fun <T> test(body: () -> T ) : T {
println("START")
try{
return body
}
finally{
println("END")
}
}
これで
(returnの行): error: type mismatch: inferred type is () -> T but T was expected
ってエラー出るのなんでですか
まだどっかに<T>って書かないとダメですか
STARTって表示してtest!って表示してENDって表示するようにしたいんですが
678デフォルトの名無しさん
2017/09/26(火) 20:59:27.36ID:zAWxdVvk bodyは () -> T じゃん?つまり body() がTじゃん?
返り値いらないならUnit型でも
返り値いらないならUnit型でも
679デフォルトの名無しさん
2017/09/26(火) 21:19:23.18ID:rflTuAqa println()って何か返すんだっけ?
680デフォルトの名無しさん
2017/09/26(火) 21:25:08.76ID:aozsvlNo コピペ参考でジェネリクス書いちゃう気持ちはわかる
ネットとかにある高階関数なんかのサンプルはたいていなんか小難しいパターンやってるからな
ちょこちょこ検索してみたけどシンプルなのはなかなかないようだ
というわけで顧客が必要だったもの:
fun main(args : Array<String>){
test(){
println("test!")
}
}
fun test(body: () -> Unit){
println("START")
try{
return body()
}
finally{
println("END")
}
}
超わかりやすい
ネットとかにある高階関数なんかのサンプルはたいていなんか小難しいパターンやってるからな
ちょこちょこ検索してみたけどシンプルなのはなかなかないようだ
というわけで顧客が必要だったもの:
fun main(args : Array<String>){
test(){
println("test!")
}
}
fun test(body: () -> Unit){
println("START")
try{
return body()
}
finally{
println("END")
}
}
超わかりやすい
681デフォルトの名無しさん
2017/09/26(火) 22:18:45.79ID:8E9hjYW6 >>680
それ return 書かなくても同じだよね?
それ return 書かなくても同じだよね?
682デフォルトの名無しさん
2017/09/27(水) 00:00:41.38ID:u5lJ+g1P 簡素化のためにUnitを返す型をクロージャーにしてるけど任意の型を戻せるようにしたいんじゃないの
>>680は顧客が本当に必要だったものとは別のものが出来上がってる事例な気がする
>>680は顧客が本当に必要だったものとは別のものが出来上がってる事例な気がする
683デフォルトの名無しさん
2017/09/27(水) 02:23:01.67ID:T8WeFZTh >>677
return body ではなく return body() では?
return body ではなく return body() では?
684デフォルトの名無しさん
2017/09/28(木) 00:26:24.46ID:iSh/X78V 前から思ってたんだけど、Kotlinって
val hogeIsEmpty = hogeが空かどうかのわりと長い1行
if (hogeIsEmpty) {
// then
}
みたいな読み下す優先の変数の名前とか分離定義って推奨されてる?
Javaでやらないようなことはやらんほうがいい? 条件カッコに改行ありで詰め込むべき?
val hogeIsEmpty = hogeが空かどうかのわりと長い1行
if (hogeIsEmpty) {
// then
}
みたいな読み下す優先の変数の名前とか分離定義って推奨されてる?
Javaでやらないようなことはやらんほうがいい? 条件カッコに改行ありで詰め込むべき?
685デフォルトの名無しさん
2017/09/28(木) 00:37:08.13ID:ZguEyfSR そういうのはRubyでやれや!って煽られて終わりな気も致しますよ
686デフォルトの名無しさん
2017/09/28(木) 00:42:19.80ID:iSh/X78V くっ…
687デフォルトの名無しさん
2017/09/28(木) 01:13:09.11ID:TXb2X2Zy えーそれ言語関係なくない?
hogeIsEmptyな関数に抽出するのは
リファクタリングの基本だしJavaでもやるだろ
hogeIsEmptyな関数に抽出するのは
リファクタリングの基本だしJavaでもやるだろ
688デフォルトの名無しさん
2017/09/28(木) 18:33:31.64ID:Qp0jWVYU むしろJavaだとboolean isHogeEmpty()ってメソッドを作るケースだから
Javaの文法が古臭いと仕切り直したKotlinではメソッドを作らないのが正当なんじゃないの
Javaの文法が古臭いと仕切り直したKotlinではメソッドを作らないのが正当なんじゃないの
689デフォルトの名無しさん
2017/09/28(木) 20:41:39.85ID:DhynOxwg そうなのか?
うーん。なんだったらgetだけのプロパティ作ってその中でやるという手もあるが。
うーん。なんだったらgetだけのプロパティ作ってその中でやるという手もあるが。
690デフォルトの名無しさん
2017/09/28(木) 21:04:34.88ID:wU4E+DpF691デフォルトの名無しさん
2017/09/29(金) 08:30:52.93ID:Zb0/fBQl あー、rubyは変数いきなり定義だし命名規則もsnake_caseで緩いし変数もメソッドも呼び出し方同じにできるし
真偽には?つけてよいという風潮があるからこういうの得意だね
Java/Kotlinは読み下しさせようとするとわりとデコボコするけどそのかわり静的コンパイルだから実行パフォーマンスへの影響が少ない
(だから「ちょっと動かして見やすく名前つけただけで動作的中身的には一緒だから安心して」という説得に向いてるのはKotlinのほうではある)
Kotlinにはスコープ関数とかletとかitとか(あとはbeがあれば完璧だ)あるのでそのへん駆使してもらうしか
真偽には?つけてよいという風潮があるからこういうの得意だね
Java/Kotlinは読み下しさせようとするとわりとデコボコするけどそのかわり静的コンパイルだから実行パフォーマンスへの影響が少ない
(だから「ちょっと動かして見やすく名前つけただけで動作的中身的には一緒だから安心して」という説得に向いてるのはKotlinのほうではある)
Kotlinにはスコープ関数とかletとかitとか(あとはbeがあれば完璧だ)あるのでそのへん駆使してもらうしか
692デフォルトの名無しさん
2017/09/29(金) 09:00:05.56ID:RLeXl8wr 一般的には説明変数を追加するのに比べると
メソッド抽出のほうが可読性も保守性も高い
デメリットもあるから状況次第で選択すればいい
いずれにしても言語に依存した話ではないよ
メソッド抽出のほうが可読性も保守性も高い
デメリットもあるから状況次第で選択すればいい
いずれにしても言語に依存した話ではないよ
693デフォルトの名無しさん
2017/10/01(日) 12:07:39.75ID:l76lJP+R 言語に関係ない話だと思うんだけどごめん
初心者がゲーム作ってて、たとえばRPGのアイテムみたいなのをクラスで実装したいって考えたとき、
たとえば食べ物アイテムを100個くらい作ろうと思ったら、名前とか重さとか売価とかレシピとかを持ってるクラスが(下手するとktファイルも)それだけで100個あることになるよね
何かアイテムのデータを確かめたいとか書き換えたいとか思ったら100個の中から探さないといけなくなる気がして、とてもしんどいんだけど、なにか便利な管理方法ってあるものなのかしら
初心者がゲーム作ってて、たとえばRPGのアイテムみたいなのをクラスで実装したいって考えたとき、
たとえば食べ物アイテムを100個くらい作ろうと思ったら、名前とか重さとか売価とかレシピとかを持ってるクラスが(下手するとktファイルも)それだけで100個あることになるよね
何かアイテムのデータを確かめたいとか書き換えたいとか思ったら100個の中から探さないといけなくなる気がして、とてもしんどいんだけど、なにか便利な管理方法ってあるものなのかしら
694デフォルトの名無しさん
2017/10/01(日) 12:35:40.87ID:z+KkZaZ7 データベース…
695デフォルトの名無しさん
2017/10/01(日) 13:26:09.11ID:l76lJP+R でもデータベースはメソッド生えないにゃん…
現状の超でっかいMapオブジェクト
{"yakusou" -> {"name":"薬草", "price":10, "weight":2, "action":["EAT","DROP","HEAL","GRIND"]...}}
の該当アイテム読んでactionで分岐するメソッド構成とあんまし変わらない気がするにゃん…
ビルド時にCSVファイルとかからクラスファイルを生成してもらえばいいのではと思ったけど
書いてるときにアイテムのクラスやメソッドが参照できないとIDEが補完警告出すことに気づいてぐにょーんってなってる
たぶんゲーム特有のなんとかかんとかなんだろうと思うのでなんとかする
現状の超でっかいMapオブジェクト
{"yakusou" -> {"name":"薬草", "price":10, "weight":2, "action":["EAT","DROP","HEAL","GRIND"]...}}
の該当アイテム読んでactionで分岐するメソッド構成とあんまし変わらない気がするにゃん…
ビルド時にCSVファイルとかからクラスファイルを生成してもらえばいいのではと思ったけど
書いてるときにアイテムのクラスやメソッドが参照できないとIDEが補完警告出すことに気づいてぐにょーんってなってる
たぶんゲーム特有のなんとかかんとかなんだろうと思うのでなんとかする
696デフォルトの名無しさん
2017/10/01(日) 13:29:23.37ID:sf4M11/u つまり、どういうこと?
697デフォルトの名無しさん
2017/10/01(日) 13:45:30.71ID:kJ8csjIE698デフォルトの名無しさん
2017/10/01(日) 15:01:31.15ID:OWvF7Xmk むしろそれぞれクラス化するのはアクションの方で
アイテムなんて1クラスで十分じゃね
アイテムなんて1クラスで十分じゃね
699デフォルトの名無しさん
2017/10/01(日) 15:03:06.78ID:7TAdAwOu ゲ制でやれ
700デフォルトの名無しさん
2017/10/01(日) 15:06:13.80ID:4trAwtIa >>695
> {"yakusou" -> {"name":"薬草", "price":10, "weight":2, "action":["EAT","DROP","HEAL","GRIND"]...}}
> の該当アイテム読んでactionで分岐するメソッド構成とあんまし変わらない気がするにゃん…
それの何がいけないの?
> {"yakusou" -> {"name":"薬草", "price":10, "weight":2, "action":["EAT","DROP","HEAL","GRIND"]...}}
> の該当アイテム読んでactionで分岐するメソッド構成とあんまし変わらない気がするにゃん…
それの何がいけないの?
701デフォルトの名無しさん
2017/10/01(日) 15:11:03.14ID:wO0rh9jl 色々用途や効果がある個々のアイテムインスタンスが対応するメソッドを持ってて自分に関することは全て知っていて
たとえば砕いたら何になるのかとか、字面に置いたらどのテクスチャになるのかとか、を問い合わせる構造にしたいのはわかる気がする
でもそれ理想っぽいけどお察しの通りデータ増えると破綻するんすよ…
たとえば砕いたら何になるのかとか、字面に置いたらどのテクスチャになるのかとか、を問い合わせる構造にしたいのはわかる気がする
でもそれ理想っぽいけどお察しの通りデータ増えると破綻するんすよ…
702デフォルトの名無しさん
2017/10/01(日) 15:24:19.98ID:z+KkZaZ7 よくわかんないけどデータベース(SQL)から(id,)name,price,weight,actionの(データ)クラスに入れてMapに突っ込むのは普通じゃね
アクションは共通の動作だけハンドラーに直接書いて、固有の動作は個々のアイテムごとにスクリプトファイル作ってそんなかにアクションごとのメソッド書いて、それをハンドラーから実行させる
アクションは共通の動作だけハンドラーに直接書いて、固有の動作は個々のアイテムごとにスクリプトファイル作ってそんなかにアクションごとのメソッド書いて、それをハンドラーから実行させる
703デフォルトの名無しさん
2017/10/01(日) 15:27:41.13ID:z+KkZaZ7 あ
完全にサーバー<=>クライアント型のゲームを想定してました忘れてください
完全にサーバー<=>クライアント型のゲームを想定してました忘れてください
704デフォルトの名無しさん
2017/10/01(日) 15:35:03.09ID:YDbLDpC/ よっぽどドラクエ2みたいなツクールサンプル的な単一用途アイテムでもない限り
「薬草という多用途アイテムを表現するのに薬草クラスのインスタンスを作って保持する」というのは悪手
このへんは個別に考えてもらわなければならないのでまあ結論としては>>699
個々人が下手に作って再発明して失敗して適応適用していかなきゃならんなんてなんて非効率なんだとは思うのだが今のところ光明はない
ぶっちゃけ初心者にゲーム作らせるのこのへんの問題もあってあんま好きではないのだ。ユーティリティアプリが無難
「薬草という多用途アイテムを表現するのに薬草クラスのインスタンスを作って保持する」というのは悪手
このへんは個別に考えてもらわなければならないのでまあ結論としては>>699
個々人が下手に作って再発明して失敗して適応適用していかなきゃならんなんてなんて非効率なんだとは思うのだが今のところ光明はない
ぶっちゃけ初心者にゲーム作らせるのこのへんの問題もあってあんま好きではないのだ。ユーティリティアプリが無難
705デフォルトの名無しさん
2017/10/01(日) 16:36:39.58ID:IPLbJXkb 薬草を使った時の処理
薬草を燃やした時の処理
薬草を売った時の処理
…
薬草クラスにまとめようがまとめまいが
いずれはどこかに書かなければならない
だったら最初から薬草クラスに入れとけって話
薬草を燃やした時の処理
薬草を売った時の処理
…
薬草クラスにまとめようがまとめまいが
いずれはどこかに書かなければならない
だったら最初から薬草クラスに入れとけって話
706デフォルトの名無しさん
2017/10/01(日) 17:36:02.79ID:KiopyZMH じゃあ毒消し草にも同じ処理コピペすんの?
707デフォルトの名無しさん
2017/10/01(日) 23:16:31.50ID:aVSvWtqd アルゴリズムと計算量を知らないのか
千個の中から、1つを見つける際、全(線形)探索なら千回、
2分探索なら、2^10 = 1,024 だから、10回で見つけられる
2分探索なら、データ数が千個でも、探索回数は、1/100 になる
2千個になっても、全(線形)探索なら2千回、
2分探索なら、11回で見つけられる。
探索回数は、1/200 になる
データ数が倍になっても、探索回数は1回しか増えないが、
データを2分木で持っていないと、2分探索はできない
千個の中から、1つを見つける際、全(線形)探索なら千回、
2分探索なら、2^10 = 1,024 だから、10回で見つけられる
2分探索なら、データ数が千個でも、探索回数は、1/100 になる
2千個になっても、全(線形)探索なら2千回、
2分探索なら、11回で見つけられる。
探索回数は、1/200 になる
データ数が倍になっても、探索回数は1回しか増えないが、
データを2分木で持っていないと、2分探索はできない
708デフォルトの名無しさん
2017/10/01(日) 23:32:16.54ID:kJ8csjIE >>707
Mapのlookupなんですけど
Mapのlookupなんですけど
709デフォルトの名無しさん
2017/10/01(日) 23:40:51.98ID:3vO8zSI2 プログラミング向いてなさそう
710デフォルトの名無しさん
2017/10/01(日) 23:54:27.15ID:f01mTcSu 二分探索と二分探索木の探索って違わない……?
711デフォルトの名無しさん
2017/10/02(月) 00:18:14.35ID:YWGKtTIQ >>710
文章を最後まで読んでる偉い子
文章を最後まで読んでる偉い子
712デフォルトの名無しさん
2017/10/02(月) 01:24:21.58ID:wSRtZd0X ゲームでマスタ類はID(=index)でアクセスするので計算量はO(1)
そして>>693の話なら探すのは開発者なのでデータ化してメンテ画面作れという話になる
そして>>693の話なら探すのは開発者なのでデータ化してメンテ画面作れという話になる
713デフォルトの名無しさん
2017/10/02(月) 04:26:00.56ID:/O3TaAQA 長文で探索語るなら、ZDDの説明ぐらいしなされ
714デフォルトの名無しさん
2017/10/02(月) 08:35:15.29ID:fVjCl62I 一覧で管理したくなる量のデータ(とそれに紐づいた処理)のクラスをいちいち手作業で作るのが面倒大変だけどこれでいいのかなって話なんじゃないの
前が見えなくなる人は迷惑だな
前が見えなくなる人は迷惑だな
715デフォルトの名無しさん
2017/10/02(月) 10:28:12.40ID:o9ncCo8n JVMにはJAXBとかいう古き良きアーキテクチャがあってだな・・・
XMLだろうが、CSVだろうが、DBだろうが、(データ)クラスだろうが、どこに置くかは好みよね
オブジェクト指向で親クラスにユーティリティ共通メソッド置くか
関数型でユーティリティクラスに共通関数置くかも多分好みの範疇だろうよ
その上で、Kotlinだと何が流行りなの?(データ)クラス+関数型が流行り?
XMLだろうが、CSVだろうが、DBだろうが、(データ)クラスだろうが、どこに置くかは好みよね
オブジェクト指向で親クラスにユーティリティ共通メソッド置くか
関数型でユーティリティクラスに共通関数置くかも多分好みの範疇だろうよ
その上で、Kotlinだと何が流行りなの?(データ)クラス+関数型が流行り?
716707
2017/10/02(月) 23:30:03.61ID:eOIGvVq/ DB だと、B-tree, B+ tree
計算量は、O(log n)
全(線形)探索なら、O(n)
計算量は、>>707
に書いた通り
n = 100万なら、全探索で、100万回掛かるところが、
2分探索では、2^20 = 100万だから、20回
データを2分探索木で構築していないのなら、DB には勝てない
計算量は、O(log n)
全(線形)探索なら、O(n)
計算量は、>>707
に書いた通り
n = 100万なら、全探索で、100万回掛かるところが、
2分探索では、2^20 = 100万だから、20回
データを2分探索木で構築していないのなら、DB には勝てない
717デフォルトの名無しさん
2017/10/02(月) 23:38:58.59ID:o0D0xmrR O(1)でやってんだからDBに勝ってるだろ
718デフォルトの名無しさん
2017/10/03(火) 00:27:03.06ID:G2lKIaaK 100個のインスタンスを、生成しただけだろ?
Map(key : value) になっていないだろ?
Map なら、O(1) だけど
Map(key : value) になっていないだろ?
Map なら、O(1) だけど
719デフォルトの名無しさん
2017/10/03(火) 01:18:34.37ID:aqsVlxub720デフォルトの名無しさん
2017/10/03(火) 10:03:00.11ID:/m6PSf5w >>714も無視しないほうがいいような気がする
jarファイル中のクラスファイル検索なんて1万でもさして問題にならん(さすがに作成は人間の仕事ではないが)
そして問題はそこではなかった
理解できなくなっちゃったんだろうけど
jarファイル中のクラスファイル検索なんて1万でもさして問題にならん(さすがに作成は人間の仕事ではないが)
そして問題はそこではなかった
理解できなくなっちゃったんだろうけど
721デフォルトの名無しさん
2017/10/04(水) 02:14:07.85ID:KVI0o5Io Kotlinの話しろよ
722デフォルトの名無しさん
2017/10/04(水) 08:09:18.36ID:kznoEkrV JRE8では何ともなかったのにJRE9だとWARNING吐くようになったのは仕様?
Kotlinを最新の1.1.51にしても直らなかった。
Kotlinを最新の1.1.51にしても直らなかった。
723デフォルトの名無しさん
2017/10/04(水) 08:38:43.69ID:JPTWWYYO なんて出てるの?
724デフォルトの名無しさん
2017/10/04(水) 08:42:20.58ID:0hGgeKFz Androidの場合は全参照メソッド数が65536超えるとコンパイル不可能になるという問題が一応あるぞ
つらいMultiDex使う羽目になるので「どうぐぜんぶにめそっどがはえてるおぶじぇくとしこうてきにただしいくらす」以外のアプローチも初期からご検討いただくと幸いだ
つらいMultiDex使う羽目になるので「どうぐぜんぶにめそっどがはえてるおぶじぇくとしこうてきにただしいくらす」以外のアプローチも初期からご検討いただくと幸いだ
725デフォルトの名無しさん
2017/10/04(水) 09:07:35.93ID:V3GzLm78 multidexって何が辛いの?
726デフォルトの名無しさん
2017/10/04(水) 09:54:28.03ID:cxJCJ2DC \コットリ〜ン/
727722
2017/10/04(水) 19:34:08.08ID:kznoEkrV >>723
インタプリタにて↓
>>> println("hogehoge")
println("hogehoge")WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.intellij.util.text.StringFactory to co
nstructor java.lang.String(char[],boolean)
WARNING: Please consider reporting this to the maintainers of com.intellij.util.
text.StringFactory
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflect
ive access operations
WARNING: All illegal access operations will be denied in a future release
hogehoge
二度目以降は正常↓
>>> println("hogehoge")
println("hogehoge")hogehoge
インタプリタにて↓
>>> println("hogehoge")
println("hogehoge")WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.intellij.util.text.StringFactory to co
nstructor java.lang.String(char[],boolean)
WARNING: Please consider reporting this to the maintainers of com.intellij.util.
text.StringFactory
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflect
ive access operations
WARNING: All illegal access operations will be denied in a future release
hogehoge
二度目以降は正常↓
>>> println("hogehoge")
println("hogehoge")hogehoge
728デフォルトの名無しさん
2017/10/04(水) 19:35:36.92ID:sxpDUYrW kotlinって自作例外を「アプリ内事象○○のせいで完了できなかったんで3つくらい上の自作catchで捕まえて処置よろしこ」程度のメッセージ的に気軽に使ってもいい?
外部提供APIとかじゃなく、自作のプログラム内での処理依頼のやり取り用
外部提供APIとかじゃなく、自作のプログラム内での処理依頼のやり取り用
729デフォルトの名無しさん
2017/10/04(水) 20:44:57.35ID:+JSlwxf3 String, char[] が異なる型なのかも
文字配列は、C言語の、\0 終端文字列かな?
String型は高機能な、C++のString型かな?
文字配列は、C言語の、\0 終端文字列かな?
String型は高機能な、C++のString型かな?
730デフォルトの名無しさん
2017/10/04(水) 21:19:13.27ID:1osd033a kotlinの技術書って、何で未だに日本向けのは一冊しか出てないの?
731デフォルトの名無しさん
2017/10/04(水) 21:23:31.36ID:ekjB4cHk 最近のAndroidはmultidexしなくても動くし、minSdkVersionを低く指定したら勝手にmultidexでバイナリ作られるから考慮するの無駄
というのは置いておいて、Java9のModule(Project Jigsaw)でアクセスコントロールが強化されて不正なリフレクションに対して警告出してるんじゃね
将来的には警告じゃなくエラーになりそうな気がするから、Kotlinのバージョンアップで直るのを待つべ
というのは置いておいて、Java9のModule(Project Jigsaw)でアクセスコントロールが強化されて不正なリフレクションに対して警告出してるんじゃね
将来的には警告じゃなくエラーになりそうな気がするから、Kotlinのバージョンアップで直るのを待つべ
732デフォルトの名無しさん
2017/10/04(水) 22:29:29.12ID:vuQl5P59 長澤太郎以外は販売できないことになっている
733デフォルトの名無しさん
2017/10/05(木) 01:07:21.32ID:ioWgBjMx >>730
まだあまり流行ってなくて出版社が乗り気じゃないのでは?
まだあまり流行ってなくて出版社が乗り気じゃないのでは?
734デフォルトの名無しさん
2017/10/05(木) 04:39:51.99ID:i/YPJQu8 今月2冊出るよ
735デフォルトの名無しさん
2017/10/05(木) 09:20:35.38ID:qdkn4E5e おおそうか
736デフォルトの名無しさん
2017/10/05(木) 21:38:31.29ID:c5+kzESi サーバーサイドKotlin明日発売やないか
737デフォルトの名無しさん
2017/10/05(木) 23:00:14.40ID:RWFlOlgJ 流行っているかどうかは、掌田津耶乃が判断する。
このおっさんが本を出す分野は、流行っていると言える
このおっさん1人で、プログラミングの約半分の分野を、網羅しているw
このおっさんが本を出す分野は、流行っていると言える
このおっさん1人で、プログラミングの約半分の分野を、網羅しているw
738デフォルトの名無しさん
2017/10/05(木) 23:19:11.04ID:c5+kzESi そいつが出す本自体は糞だけどな
739デフォルトの名無しさん
2017/10/05(木) 23:21:16.13ID:XUc7C4CE 別に流行り廃りでプログラムするわけじゃないしな
740デフォルトの名無しさん
2017/10/06(金) 01:37:01.01ID:x0C9073k741デフォルトの名無しさん
2017/10/06(金) 04:09:03.86ID:tqIbkLAn Kotlinスタートブック -新しいAndroidプログラミング、長澤 太郎、2016
Kotlin Webアプリケーション 新しいサーバサイドプログラミング、長澤 太郎、2017/10/6
Kotlin Webアプリケーション 新しいサーバサイドプログラミング、長澤 太郎、2017/10/6
742デフォルトの名無しさん
2017/10/06(金) 05:25:11.21ID:dm5GZqP5 http://kotlin.hatenablog.jp/entry/2012/12/10/093018
このコードエラーになるんだけど、情報古くて今はラムダで引数に()使えなくて
戻り値の型を指定することができないという理解でいいんですかね?
このコードエラーになるんだけど、情報古くて今はラムダで引数に()使えなくて
戻り値の型を指定することができないという理解でいいんですかね?
743デフォルトの名無しさん
2017/10/06(金) 05:39:21.03ID:tqIbkLAn Try Kotlin のサイトで、そのソースコードを入力して、エラーメッセージを見れば?
744デフォルトの名無しさん
2017/10/06(金) 09:08:25.48ID:NqBQU0ep それは答を教えてくれるわけじゃないからなあ
>>742
関数リテラルの戻り値の指定はこうしてくだされ
val result: (Int, Int) -> Int = {a, b -> a * b }
2012アドベントカレンダーの結果はもう検索で出なくしたほうがいいと思うんだよねえ
>>742
関数リテラルの戻り値の指定はこうしてくだされ
val result: (Int, Int) -> Int = {a, b -> a * b }
2012アドベントカレンダーの結果はもう検索で出なくしたほうがいいと思うんだよねえ
745デフォルトの名無しさん
2017/10/06(金) 10:14:22.41ID:dm5GZqP5 >>744
なるほど。ということは即時関数だと
val result: String = {a: Int, b: Int -> a.toString() + b.toString()}(3, 4)
みたいな感じにすればいいのね
なるほど。ということは即時関数だと
val result: String = {a: Int, b: Int -> a.toString() + b.toString()}(3, 4)
みたいな感じにすればいいのね
746デフォルトの名無しさん
2017/10/06(金) 11:25:26.06ID:oni6PLk4 val old = aaa.value
aaa.doValueMayChange()
if (old != aaa.value) aaaActionIsSuccess()
これなんかステキな感じに書けたりしませんかね
実際には長い処理してるだけのdoValueMayChange()の戻り値をこのためだけに真偽値にしてチェックするのってなんかキモくないですかね
if ( aaa.doValueMayChangeAndReturnTrueIfInnerTargetValueIsChanged() ) aaaActionSuccess()
aaa.doValueMayChange()
if (old != aaa.value) aaaActionIsSuccess()
これなんかステキな感じに書けたりしませんかね
実際には長い処理してるだけのdoValueMayChange()の戻り値をこのためだけに真偽値にしてチェックするのってなんかキモくないですかね
if ( aaa.doValueMayChangeAndReturnTrueIfInnerTargetValueIsChanged() ) aaaActionSuccess()
747デフォルトの名無しさん
2017/10/06(金) 17:16:40.52ID:X4PDhaWR Spek使ってる人いる?
http://spekframework.org/docs/latest/#_gradle
これの通りにbuild.gradleに書いてる気がするんだがNoMEthodErrorで動かん
10 06, 2017 5:09:49 午後 org.junit.platform.launcher.core.DefaultLauncher handleThrowable
警告: TestEngine with ID 'spek' failed to discover tests
java.lang.NoSuchMethodError: org.junit.platform.engine.support.descriptor.ClassSource.from(Ljava/lang/Class;)Lorg/junit/platform/engine/support/descriptor/ClassSource;
at org.jetbrains.spek.engine.SpekTestEngine.resolveSpec(SpekTestEngine.kt:114)
...
http://spekframework.org/docs/latest/#_gradle
これの通りにbuild.gradleに書いてる気がするんだがNoMEthodErrorで動かん
10 06, 2017 5:09:49 午後 org.junit.platform.launcher.core.DefaultLauncher handleThrowable
警告: TestEngine with ID 'spek' failed to discover tests
java.lang.NoSuchMethodError: org.junit.platform.engine.support.descriptor.ClassSource.from(Ljava/lang/Class;)Lorg/junit/platform/engine/support/descriptor/ClassSource;
at org.jetbrains.spek.engine.SpekTestEngine.resolveSpec(SpekTestEngine.kt:114)
...
748デフォルトの名無しさん
2017/10/06(金) 19:04:09.88ID:X4PDhaWR >>747
動いた。最後のほうの独立したdependenciesに追加
dependencies {
testCompile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
testCompile group: 'org.junit.platform', name: 'junit-platform-runner', version: '1.0.1'
}
junit-platform-runnerのバージョンは
https://mvnrepository.com/artifact/org.junit.platform/junit-platform-runner
にアクセスして最新ぽいバージョンのページ押してGradleタブ表示
書かなくても動いてる人はどっかで設定してるんだろうな
動いた。最後のほうの独立したdependenciesに追加
dependencies {
testCompile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
testCompile group: 'org.junit.platform', name: 'junit-platform-runner', version: '1.0.1'
}
junit-platform-runnerのバージョンは
https://mvnrepository.com/artifact/org.junit.platform/junit-platform-runner
にアクセスして最新ぽいバージョンのページ押してGradleタブ表示
書かなくても動いてる人はどっかで設定してるんだろうな
749デフォルトの名無しさん
2017/10/06(金) 21:33:44.02ID:tqIbkLAn プログラミング GROOVY、2011
Gradle 徹底入門、2014
Javaビルドツール入門 Maven/Gradle/SBT/Bazel対応、掌田津耶乃、2017
Apache Maven 3クックブック Javaソフトウェア開発のための特選レシピ集、2012
Gradle 徹底入門、2014
Javaビルドツール入門 Maven/Gradle/SBT/Bazel対応、掌田津耶乃、2017
Apache Maven 3クックブック Javaソフトウェア開発のための特選レシピ集、2012
750デフォルトの名無しさん
2017/10/06(金) 22:27:21.32ID:tSMXLmVc >>748
同じ苦労したことある。ドキュメントに書いてよ…。
同じ苦労したことある。ドキュメントに書いてよ…。
751デフォルトの名無しさん
2017/10/07(土) 05:51:08.18ID:dZntJrcK >>746
aaaに押し込みなさい
aaaに押し込みなさい
752デフォルトの名無しさん
2017/10/07(土) 14:33:30.45ID:tYMANlqN SPekはBDDだし難しいよね
作ってるぶんにはメソッドの引数と戻り値が間違いなく動きます下手に中身変えたらREDですテストのほうがいいんだけどなー
作ってるぶんにはメソッドの引数と戻り値が間違いなく動きます下手に中身変えたらREDですテストのほうがいいんだけどなー
753デフォルトの名無しさん
2017/10/07(土) 14:36:59.78ID:lxJ0Yf9D kotlinはJavaわかんなくても他言語やってたらイケル?
754デフォルトの名無しさん
2017/10/07(土) 14:53:56.94ID:tYMANlqN >>753
言語仕様の理解においてはJavaの経験は不要
ただし事例のWeb検索に関して
「Javaでこう書いてるってことはKotlinだとこう書くんだろうな」
「欲しいJavaの処理はだいたいこのへんだろうからここをコピペしてIDEで自動変換しよう」
というようなことができる程度の「Javaプログラムを読める力」が実際には必要
でもまあネットでJava入門を3日かけて最後まで読んで身につく程度があれば充分なのでそれこそ他言語経験があれば問題はないね
言語仕様の理解においてはJavaの経験は不要
ただし事例のWeb検索に関して
「Javaでこう書いてるってことはKotlinだとこう書くんだろうな」
「欲しいJavaの処理はだいたいこのへんだろうからここをコピペしてIDEで自動変換しよう」
というようなことができる程度の「Javaプログラムを読める力」が実際には必要
でもまあネットでJava入門を3日かけて最後まで読んで身につく程度があれば充分なのでそれこそ他言語経験があれば問題はないね
755デフォルトの名無しさん
2017/10/07(土) 14:59:26.09ID:lxJ0Yf9D756デフォルトの名無しさん
2017/10/07(土) 18:31:13.36ID:b4KK/o19 javaは1日でマスターできるので実質java未経験でも問題ないよ
757デフォルトの名無しさん
2017/10/07(土) 19:18:53.56ID:rBYfi2xH 変数に入れた文字列でメソッドやプロパティを呼ぶことはできますか
val mes = "toUpperCase"
someString.callMethod(mes, null)
これでsomeString.toUpperCase()のかわりになるみたいなやつです
val mes = "toUpperCase"
someString.callMethod(mes, null)
これでsomeString.toUpperCase()のかわりになるみたいなやつです
758デフォルトの名無しさん
2017/10/07(土) 19:29:23.45ID:+RQU5E5j ことぅりんだからなお前ら
ことりんとかいってたら数す
ことりんとかいってたら数す
759デフォルトの名無しさん
2017/10/07(土) 19:33:19.97ID:+RQU5E5j それにしてもAppleがObjective-CにSwiftを追加したと思ったらGoogleがJavaにKotlinを追加してどいつもこいつもまったく...
760デフォルトの名無しさん
2017/10/07(土) 19:41:49.21ID:XbHkmFTG ことりんかわいい
761デフォルトの名無しさん
2017/10/07(土) 22:16:30.42ID:f9dDdlSq ことりん(*´ェ`*)ポッ
762デフォルトの名無しさん
2017/10/07(土) 22:18:46.44ID:iveAgMmn 人間だったら絶対美少女
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★6 [ぐれ★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 【音楽】BARBEE BOYS・KONTAが事故で四肢麻痺を公表、新体制で活動は継続 [少考さん★]
- 【テレビ】25年ぶり復活「炎のチャレンジャー」南原清隆&菊池風磨がMC 懐かし「電流イライラ棒」も [湛然★]
- 中国「捜索レーダー起動は各国の通常の手法」 火器管制用か回答せず [蚤の市★]
- 【訃報】声優・西村知道さん死去 「SLAM DUNK」安西先生役 9月に体調不良のため一時休業 [少考さん★]
- 女って金とイケメンしか見てないよな
- 【閲覧注意】ちずちんな
- ぺこーら、地震で同僚が次々配信を止めるなか強行し続けるので悪目立ちするwww [268244553]
- 高市総理、睡眠時間30分😢
- フェリーの魅力を語ろう。
- 【仁藤悲報】Colaboさん、東京都の公金を月7万円の「整体治療費」に使っていたことが判明してしまう!!!! [535458756]
