Kotlin [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2016/02/27(土) 01:46:01.68ID:Ag8w7//2
JetBrainsが開発した期待の新言語Kotlinについて語りましょう
https://kotlinlang.org
2017/09/23(土) 10:59:53.99ID:BNc4tUhk
具体例があると話も広がりそうだけどイメージがわかない
2017/09/23(土) 13:45:04.86ID:HgJ0Nznd
コレクションって色々種類があって、
問題によって適切なクラスを選ぶべきとか言っていたくせに
mutableListはmutableListしか種類ないし、それで別に問題がないってどういうことだよ
フィールドもprivateにしてsetter, getterからアクセスしろとか言っていたくせに
プロパティアクセスは実質フィールドをpublicにしているのと変わりないじゃねえか
その他、継承は良いことだからたくさん使って活用していこうとか言っていたくせに
openをつけないと継承できなくして、実質継承は推奨しないみたいになってるのなんなん
嘘ばっかり言いやがって
655デフォルトの名無しさん
垢版 |
2017/09/23(土) 14:17:09.35ID:8bsZ0VcP
>>652
「のっそい」って何処の方言?沢山って意味?
2017/09/23(土) 14:32:54.88ID:Ok7b72Pt
>>654
いろいろ勘違いしててどこから突っ込めばいいのやら
2017/09/23(土) 15:29:22.72ID:vuIl3Vgh
プロパティアクセスは、publicなフィールドへのアクセスと違って、
setを制限してgetだけにできるし、
setするときの値チェックなんかもできるし、
privateフィールドをsetter/getterでアクセスする利点はそのままに、
使うときの表記をシンプルにしてくれる
2017/09/23(土) 15:29:38.76ID:vuIl3Vgh
継承するよりコンポジションしてアクセスを転送する方がいいっていうのは
もうオブジェクト指向では定説
2017/09/23(土) 15:37:14.57ID:vuIl3Vgh
ミュータブルなコレクションに厳密な静的型チェックを適用としようとするのはいろいろ限界がある
Javaでは厳密な静的型チェックを放棄して使いやすさを優先してる
2017/09/23(土) 15:40:52.48ID:JwqPmi7Z
今更だけど、StringをStringリスト(配列)にするってクッソ馬鹿っぽいな
Stringをnewするのも重いし、確保したメモリをGCで回収するのも重くなる

「StringをCharにしてからStringにするという手間」とか言うならChar配列で扱えというね
String配列扱うくらいに性能を考えないなら、当初の通りに#toList #map使っててもおkだろ
2017/09/23(土) 16:00:34.34ID:BNc4tUhk
>>654
>mutableListはmutableListしか種類ない
意味がわからない
大枠でList, Set, MapなどがあってLinkedHashMapとSortedMapは順序制御が違うし
ArrayListとLinkedListは追加削除のパターンによって計算量オーダーが異なる

>setter, getterからアクセスしろとか言っていたくせに
構文が理由ではない
>フィールドをpublicにしているのと変わりない
構文が変わりないだけ
2017/09/23(土) 16:22:03.12ID:vuIl3Vgh
>>660
Stringがイミュータブルなら、
Stringの一部分を取り出して新しいStringを作るのはとても軽い処理でできる
その新しStringを作る仕組みで配列を作れば、それも軽い
2017/09/23(土) 16:43:59.09ID:JwqPmi7Z
COW信者乙

さておき、入れ物のStringインスタンスをnewするのはやめたいよな
中身をコピーするかどうか以前にJVM上のインスタンスの確保が重たいんだよ
そして、GCで回収して回る対象個数が増えて重たくなるのは中身のコピー有無は関係ないんだよ
664デフォルトの名無しさん
垢版 |
2017/09/23(土) 17:42:00.77ID:8bsZ0VcP
かといって日頃パフォーマンスに影響するような膨大な処理をさせてないので気にならない
2017/09/23(土) 20:38:20.82ID:3qopZopL
Kotlinの気に入らないところ
http://anopara.net/2017/09/16/kotlin%E3%81%AE%E6%B0%97%E3%81%AB%E5%85%A5%E3%82%89%E3%81%AA%E3%81%84%E3%81%A8%E3%81%93%E3%82%8D/
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 実装は知らない(汗
668デフォルトの名無しさん
垢版 |
2017/09/23(土) 22:39:08.56ID:XK13+/v0
>>641
tornadoFXのマニュアル今読んでいるところだけど、tornadoFXだめなのか...
>>642
前やってみたけど、Javascriptとつなぎ合わせるところが、ちょっと面倒だった。
型安全でもないし...
2017/09/24(日) 02:01:15.02ID:GOJB25/b
>>666
文法が気に入らないって言ってるだけでJavaやScalaを使い込んでるようにも見えんがな
JVMの仕様上、JavaやScalaの方が最適化されてるからKotlinが気に入らないって話かと思って読んだらもっと浅い話だった

Kotlinの文法が良いってこのスレは賞賛してるから論点はこのスレと合致してる
ただ、Kotlinの文法がダメって記事と、Kotlinの文法がイイってスレとで感想が真逆なだけだ
670デフォルトの名無しさん
垢版 |
2017/09/24(日) 02:17:41.07ID:vbDFNvhm
>>655
ものすごい→ものっそい
2017/09/24(日) 09:32:49.28ID:UrGEC0gh
tornadoFXはDSLのダメなとこ出てるねえってだけだから、それ気にならないならいいんじゃないかな
足りない情報は君が発信するんだ
2017/09/24(日) 10:29:34.48ID:tu0D//Rh
Kotlin は、Groovy, Scala, Ruby の影響を受けている

Ruby を関数型にした、Elixir を意識している。
関数型では、デフォルトが、immutable
2017/09/24(日) 14:15:58.51ID:q8xwt5Nv
ねえねえおにいちゃん
ミュータブルリストの先頭から要素を削除して詰める(戻り値不問)って行為をいちばんうまくできる書き方ってなあに
674デフォルトの名無しさん
垢版 |
2017/09/24(日) 14:31:53.81ID:c233uqnI
>>673
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]
2017/09/25(月) 02:59:33.77ID:JjTJVibn
kotolinってc#で言うpartial classみたいなことできないのかな?
実装を分けたい
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って表示するようにしたいんですが
2017/09/26(火) 20:59:27.36ID:zAWxdVvk
bodyは () -> T じゃん?つまり body() がTじゃん?
返り値いらないならUnit型でも
679デフォルトの名無しさん
垢版 |
2017/09/26(火) 21:19:23.18ID:rflTuAqa
println()って何か返すんだっけ?
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")
}
}

超わかりやすい
681デフォルトの名無しさん
垢版 |
2017/09/26(火) 22:18:45.79ID:8E9hjYW6
>>680
それ return 書かなくても同じだよね?
2017/09/27(水) 00:00:41.38ID:u5lJ+g1P
簡素化のためにUnitを返す型をクロージャーにしてるけど任意の型を戻せるようにしたいんじゃないの
>>680は顧客が本当に必要だったものとは別のものが出来上がってる事例な気がする
683デフォルトの名無しさん
垢版 |
2017/09/27(水) 02:23:01.67ID:T8WeFZTh
>>677
return body ではなく return body() では?
2017/09/28(木) 00:26:24.46ID:iSh/X78V
前から思ってたんだけど、Kotlinって
val hogeIsEmpty = hogeが空かどうかのわりと長い1行
if (hogeIsEmpty) {
// then
}
みたいな読み下す優先の変数の名前とか分離定義って推奨されてる?
Javaでやらないようなことはやらんほうがいい? 条件カッコに改行ありで詰め込むべき?
2017/09/28(木) 00:37:08.13ID:ZguEyfSR
そういうのはRubyでやれや!って煽られて終わりな気も致しますよ
2017/09/28(木) 00:42:19.80ID:iSh/X78V
くっ…
2017/09/28(木) 01:13:09.11ID:TXb2X2Zy
えーそれ言語関係なくない?
hogeIsEmptyな関数に抽出するのは
リファクタリングの基本だしJavaでもやるだろ
2017/09/28(木) 18:33:31.64ID:Qp0jWVYU
むしろJavaだとboolean isHogeEmpty()ってメソッドを作るケースだから
Javaの文法が古臭いと仕切り直したKotlinではメソッドを作らないのが正当なんじゃないの
2017/09/28(木) 20:41:39.85ID:DhynOxwg
そうなのか?

うーん。なんだったらgetだけのプロパティ作ってその中でやるという手もあるが。
2017/09/28(木) 21:04:34.88ID:wU4E+DpF
>>684
変数での分離で良い

一見で意味付けが分かり辛いものは変数名で説明していい
局所的なものであれば無意味にメソッド化する必要も無い
その条件式が2度出てきたときに再考する
2017/09/29(金) 08:30:52.93ID:Zb0/fBQl
あー、rubyは変数いきなり定義だし命名規則もsnake_caseで緩いし変数もメソッドも呼び出し方同じにできるし
真偽には?つけてよいという風潮があるからこういうの得意だね
Java/Kotlinは読み下しさせようとするとわりとデコボコするけどそのかわり静的コンパイルだから実行パフォーマンスへの影響が少ない
(だから「ちょっと動かして見やすく名前つけただけで動作的中身的には一緒だから安心して」という説得に向いてるのはKotlinのほうではある)
Kotlinにはスコープ関数とかletとかitとか(あとはbeがあれば完璧だ)あるのでそのへん駆使してもらうしか
2017/09/29(金) 09:00:05.56ID:RLeXl8wr
一般的には説明変数を追加するのに比べると
メソッド抽出のほうが可読性も保守性も高い
デメリットもあるから状況次第で選択すればいい
いずれにしても言語に依存した話ではないよ
2017/10/01(日) 12:07:39.75ID:l76lJP+R
言語に関係ない話だと思うんだけどごめん
初心者がゲーム作ってて、たとえばRPGのアイテムみたいなのをクラスで実装したいって考えたとき、
たとえば食べ物アイテムを100個くらい作ろうと思ったら、名前とか重さとか売価とかレシピとかを持ってるクラスが(下手するとktファイルも)それだけで100個あることになるよね
何かアイテムのデータを確かめたいとか書き換えたいとか思ったら100個の中から探さないといけなくなる気がして、とてもしんどいんだけど、なにか便利な管理方法ってあるものなのかしら
2017/10/01(日) 12:35:40.87ID:z+KkZaZ7
データベース…
2017/10/01(日) 13:26:09.11ID:l76lJP+R
でもデータベースはメソッド生えないにゃん…
現状の超でっかいMapオブジェクト
{"yakusou" -> {"name":"薬草", "price":10, "weight":2, "action":["EAT","DROP","HEAL","GRIND"]...}}
の該当アイテム読んでactionで分岐するメソッド構成とあんまし変わらない気がするにゃん…

ビルド時にCSVファイルとかからクラスファイルを生成してもらえばいいのではと思ったけど
書いてるときにアイテムのクラスやメソッドが参照できないとIDEが補完警告出すことに気づいてぐにょーんってなってる
たぶんゲーム特有のなんとかかんとかなんだろうと思うのでなんとかする
2017/10/01(日) 13:29:23.37ID:sf4M11/u
つまり、どういうこと?
2017/10/01(日) 13:45:30.71ID:kJ8csjIE
>>695
アイテムごとに個別のメソッドが必要だと考えるのは抽象化が不足してるから
食べ物アイテム100個作っても食べ物クラス1個で済む場合もあるでしょ
2017/10/01(日) 15:01:31.15ID:OWvF7Xmk
むしろそれぞれクラス化するのはアクションの方で
アイテムなんて1クラスで十分じゃね
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で分岐するメソッド構成とあんまし変わらない気がするにゃん…

それの何がいけないの?
2017/10/01(日) 15:11:03.14ID:wO0rh9jl
色々用途や効果がある個々のアイテムインスタンスが対応するメソッドを持ってて自分に関することは全て知っていて
たとえば砕いたら何になるのかとか、字面に置いたらどのテクスチャになるのかとか、を問い合わせる構造にしたいのはわかる気がする
でもそれ理想っぽいけどお察しの通りデータ増えると破綻するんすよ…
2017/10/01(日) 15:24:19.98ID:z+KkZaZ7
よくわかんないけどデータベース(SQL)から(id,)name,price,weight,actionの(データ)クラスに入れてMapに突っ込むのは普通じゃね
アクションは共通の動作だけハンドラーに直接書いて、固有の動作は個々のアイテムごとにスクリプトファイル作ってそんなかにアクションごとのメソッド書いて、それをハンドラーから実行させる
2017/10/01(日) 15:27:41.13ID:z+KkZaZ7

完全にサーバー<=>クライアント型のゲームを想定してました忘れてください
2017/10/01(日) 15:35:03.09ID:YDbLDpC/
よっぽどドラクエ2みたいなツクールサンプル的な単一用途アイテムでもない限り
「薬草という多用途アイテムを表現するのに薬草クラスのインスタンスを作って保持する」というのは悪手
このへんは個別に考えてもらわなければならないのでまあ結論としては>>699
個々人が下手に作って再発明して失敗して適応適用していかなきゃならんなんてなんて非効率なんだとは思うのだが今のところ光明はない
ぶっちゃけ初心者にゲーム作らせるのこのへんの問題もあってあんま好きではないのだ。ユーティリティアプリが無難
2017/10/01(日) 16:36:39.58ID:IPLbJXkb
薬草を使った時の処理
薬草を燃やした時の処理
薬草を売った時の処理


薬草クラスにまとめようがまとめまいが
いずれはどこかに書かなければならない
だったら最初から薬草クラスに入れとけって話
2017/10/01(日) 17:36:02.79ID:KiopyZMH
じゃあ毒消し草にも同じ処理コピペすんの?
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分探索はできない
2017/10/01(日) 23:32:16.54ID:kJ8csjIE
>>707
Mapのlookupなんですけど
2017/10/01(日) 23:40:51.98ID:3vO8zSI2
プログラミング向いてなさそう
2017/10/01(日) 23:54:27.15ID:f01mTcSu
二分探索と二分探索木の探索って違わない……?
2017/10/02(月) 00:18:14.35ID:YWGKtTIQ
>>710
文章を最後まで読んでる偉い子
2017/10/02(月) 01:24:21.58ID:wSRtZd0X
ゲームでマスタ類はID(=index)でアクセスするので計算量はO(1)
そして>>693の話なら探すのは開発者なのでデータ化してメンテ画面作れという話になる
2017/10/02(月) 04:26:00.56ID:/O3TaAQA
長文で探索語るなら、ZDDの説明ぐらいしなされ
2017/10/02(月) 08:35:15.29ID:fVjCl62I
一覧で管理したくなる量のデータ(とそれに紐づいた処理)のクラスをいちいち手作業で作るのが面倒大変だけどこれでいいのかなって話なんじゃないの
前が見えなくなる人は迷惑だな
2017/10/02(月) 10:28:12.40ID:o9ncCo8n
JVMにはJAXBとかいう古き良きアーキテクチャがあってだな・・・
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 には勝てない
2017/10/02(月) 23:38:58.59ID:o0D0xmrR
O(1)でやってんだからDBに勝ってるだろ
2017/10/03(火) 00:27:03.06ID:G2lKIaaK
100個のインスタンスを、生成しただけだろ?

Map(key : value) になっていないだろ?
Map なら、O(1) だけど
2017/10/03(火) 01:18:34.37ID:aqsVlxub
>>716
二分探索木じゃなくても二分探索はできるだろ
>>710の親切なツッコミをスルーして無駄レスすんなよ
2017/10/03(火) 10:03:00.11ID:/m6PSf5w
>>714も無視しないほうがいいような気がする
jarファイル中のクラスファイル検索なんて1万でもさして問題にならん(さすがに作成は人間の仕事ではないが)
そして問題はそこではなかった
理解できなくなっちゃったんだろうけど
2017/10/04(水) 02:14:07.85ID:KVI0o5Io
Kotlinの話しろよ
2017/10/04(水) 08:09:18.36ID:kznoEkrV
JRE8では何ともなかったのにJRE9だとWARNING吐くようになったのは仕様?
Kotlinを最新の1.1.51にしても直らなかった。
723デフォルトの名無しさん
垢版 |
2017/10/04(水) 08:38:43.69ID:JPTWWYYO
なんて出てるの?
2017/10/04(水) 08:42:20.58ID:0hGgeKFz
Androidの場合は全参照メソッド数が65536超えるとコンパイル不可能になるという問題が一応あるぞ
つらいMultiDex使う羽目になるので「どうぐぜんぶにめそっどがはえてるおぶじぇくとしこうてきにただしいくらす」以外のアプローチも初期からご検討いただくと幸いだ
2017/10/04(水) 09:07:35.93ID:V3GzLm78
multidexって何が辛いの?
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
2017/10/04(水) 19:35:36.92ID:sxpDUYrW
kotlinって自作例外を「アプリ内事象○○のせいで完了できなかったんで3つくらい上の自作catchで捕まえて処置よろしこ」程度のメッセージ的に気軽に使ってもいい?
外部提供APIとかじゃなく、自作のプログラム内での処理依頼のやり取り用
2017/10/04(水) 20:44:57.35ID:+JSlwxf3
String, char[] が異なる型なのかも

文字配列は、C言語の、\0 終端文字列かな?
String型は高機能な、C++のString型かな?
2017/10/04(水) 21:19:13.27ID:1osd033a
kotlinの技術書って、何で未だに日本向けのは一冊しか出てないの?
2017/10/04(水) 21:23:31.36ID:ekjB4cHk
最近のAndroidはmultidexしなくても動くし、minSdkVersionを低く指定したら勝手にmultidexでバイナリ作られるから考慮するの無駄

というのは置いておいて、Java9のModule(Project Jigsaw)でアクセスコントロールが強化されて不正なリフレクションに対して警告出してるんじゃね
将来的には警告じゃなくエラーになりそうな気がするから、Kotlinのバージョンアップで直るのを待つべ
2017/10/04(水) 22:29:29.12ID:vuQl5P59
長澤太郎以外は販売できないことになっている
733デフォルトの名無しさん
垢版 |
2017/10/05(木) 01:07:21.32ID:ioWgBjMx
>>730
まだあまり流行ってなくて出版社が乗り気じゃないのでは?
2017/10/05(木) 04:39:51.99ID:i/YPJQu8
今月2冊出るよ
2017/10/05(木) 09:20:35.38ID:qdkn4E5e
おおそうか
2017/10/05(木) 21:38:31.29ID:c5+kzESi
サーバーサイドKotlin明日発売やないか
2017/10/05(木) 23:00:14.40ID:RWFlOlgJ
流行っているかどうかは、掌田津耶乃が判断する。
このおっさんが本を出す分野は、流行っていると言える

このおっさん1人で、プログラミングの約半分の分野を、網羅しているw
2017/10/05(木) 23:19:11.04ID:c5+kzESi
そいつが出す本自体は糞だけどな
2017/10/05(木) 23:21:16.13ID:XUc7C4CE
別に流行り廃りでプログラムするわけじゃないしな
740デフォルトの名無しさん
垢版 |
2017/10/06(金) 01:37:01.01ID:x0C9073k
これか。10月6日発売。

Kotlin Webアプリケーション 新しいサーバサイドプログラミング
http://amzn.asia/aQkmPNJ
2017/10/06(金) 04:09:03.86ID:tqIbkLAn
Kotlinスタートブック -新しいAndroidプログラミング、長澤 太郎、2016

Kotlin Webアプリケーション 新しいサーバサイドプログラミング、長澤 太郎、2017/10/6
2017/10/06(金) 05:25:11.21ID:dm5GZqP5
http://kotlin.hatenablog.jp/entry/2012/12/10/093018
このコードエラーになるんだけど、情報古くて今はラムダで引数に()使えなくて
戻り値の型を指定することができないという理解でいいんですかね?
2017/10/06(金) 05:39:21.03ID:tqIbkLAn
Try Kotlin のサイトで、そのソースコードを入力して、エラーメッセージを見れば?
2017/10/06(金) 09:08:25.48ID:NqBQU0ep
それは答を教えてくれるわけじゃないからなあ

>>742
関数リテラルの戻り値の指定はこうしてくだされ
val result: (Int, Int) -> Int = {a, b -> a * b }
2012アドベントカレンダーの結果はもう検索で出なくしたほうがいいと思うんだよねえ
2017/10/06(金) 10:14:22.41ID:dm5GZqP5
>>744
なるほど。ということは即時関数だと
val result: String = {a: Int, b: Int -> a.toString() + b.toString()}(3, 4)
みたいな感じにすればいいのね
2017/10/06(金) 11:25:26.06ID:oni6PLk4
val old = aaa.value
aaa.doValueMayChange()
if (old != aaa.value) aaaActionIsSuccess()
これなんかステキな感じに書けたりしませんかね
実際には長い処理してるだけのdoValueMayChange()の戻り値をこのためだけに真偽値にしてチェックするのってなんかキモくないですかね
if ( aaa.doValueMayChangeAndReturnTrueIfInnerTargetValueIsChanged() ) aaaActionSuccess()
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)
...
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タブ表示
書かなくても動いてる人はどっかで設定してるんだろうな
2017/10/06(金) 21:33:44.02ID:tqIbkLAn
プログラミング GROOVY、2011

Gradle 徹底入門、2014
Javaビルドツール入門 Maven/Gradle/SBT/Bazel対応、掌田津耶乃、2017

Apache Maven 3クックブック Javaソフトウェア開発のための特選レシピ集、2012
2017/10/06(金) 22:27:21.32ID:tSMXLmVc
>>748
同じ苦労したことある。ドキュメントに書いてよ…。
2017/10/07(土) 05:51:08.18ID:dZntJrcK
>>746
aaaに押し込みなさい
2017/10/07(土) 14:33:30.45ID:tYMANlqN
SPekはBDDだし難しいよね
作ってるぶんにはメソッドの引数と戻り値が間違いなく動きます下手に中身変えたらREDですテストのほうがいいんだけどなー
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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