X



Kotlin [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0700デフォルトの名無しさん
垢版 |
2017/10/01(日) 15:06:13.80ID:4trAwtIa
>>695
> {"yakusou" -> {"name":"薬草", "price":10, "weight":2, "action":["EAT","DROP","HEAL","GRIND"]...}}
> の該当アイテム読んでactionで分岐するメソッド構成とあんまし変わらない気がするにゃん…

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

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


薬草クラスにまとめようがまとめまいが
いずれはどこかに書かなければならない
だったら最初から薬草クラスに入れとけって話
0707デフォルトの名無しさん
垢版 |
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分探索はできない
0712デフォルトの名無しさん
垢版 |
2017/10/02(月) 01:24:21.58ID:wSRtZd0X
ゲームでマスタ類はID(=index)でアクセスするので計算量はO(1)
そして>>693の話なら探すのは開発者なのでデータ化してメンテ画面作れという話になる
0714デフォルトの名無しさん
垢版 |
2017/10/02(月) 08:35:15.29ID:fVjCl62I
一覧で管理したくなる量のデータ(とそれに紐づいた処理)のクラスをいちいち手作業で作るのが面倒大変だけどこれでいいのかなって話なんじゃないの
前が見えなくなる人は迷惑だな
0715デフォルトの名無しさん
垢版 |
2017/10/02(月) 10:28:12.40ID:o9ncCo8n
JVMにはJAXBとかいう古き良きアーキテクチャがあってだな・・・
XMLだろうが、CSVだろうが、DBだろうが、(データ)クラスだろうが、どこに置くかは好みよね

オブジェクト指向で親クラスにユーティリティ共通メソッド置くか
関数型でユーティリティクラスに共通関数置くかも多分好みの範疇だろうよ

その上で、Kotlinだと何が流行りなの?(データ)クラス+関数型が流行り?
0716707
垢版 |
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 には勝てない
0718デフォルトの名無しさん
垢版 |
2017/10/03(火) 00:27:03.06ID:G2lKIaaK
100個のインスタンスを、生成しただけだろ?

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

文字配列は、C言語の、\0 終端文字列かな?
String型は高機能な、C++のString型かな?
0731デフォルトの名無しさん
垢版 |
2017/10/04(水) 21:23:31.36ID:ekjB4cHk
最近のAndroidはmultidexしなくても動くし、minSdkVersionを低く指定したら勝手にmultidexでバイナリ作られるから考慮するの無駄

というのは置いておいて、Java9のModule(Project Jigsaw)でアクセスコントロールが強化されて不正なリフレクションに対して警告出してるんじゃね
将来的には警告じゃなくエラーになりそうな気がするから、Kotlinのバージョンアップで直るのを待つべ
0733デフォルトの名無しさん
垢版 |
2017/10/05(木) 01:07:21.32ID:ioWgBjMx
>>730
まだあまり流行ってなくて出版社が乗り気じゃないのでは?
0737デフォルトの名無しさん
垢版 |
2017/10/05(木) 23:00:14.40ID:RWFlOlgJ
流行っているかどうかは、掌田津耶乃が判断する。
このおっさんが本を出す分野は、流行っていると言える

このおっさん1人で、プログラミングの約半分の分野を、網羅しているw
0740デフォルトの名無しさん
垢版 |
2017/10/06(金) 01:37:01.01ID:x0C9073k
これか。10月6日発売。

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

Kotlin Webアプリケーション 新しいサーバサイドプログラミング、長澤 太郎、2017/10/6
0743デフォルトの名無しさん
垢版 |
2017/10/06(金) 05:39:21.03ID:tqIbkLAn
Try Kotlin のサイトで、そのソースコードを入力して、エラーメッセージを見れば?
0744デフォルトの名無しさん
垢版 |
2017/10/06(金) 09:08:25.48ID:NqBQU0ep
それは答を教えてくれるわけじゃないからなあ

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

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

Apache Maven 3クックブック Javaソフトウェア開発のための特選レシピ集、2012
0752デフォルトの名無しさん
垢版 |
2017/10/07(土) 14:33:30.45ID:tYMANlqN
SPekはBDDだし難しいよね
作ってるぶんにはメソッドの引数と戻り値が間違いなく動きます下手に中身変えたらREDですテストのほうがいいんだけどなー
0754デフォルトの名無しさん
垢版 |
2017/10/07(土) 14:53:56.94ID:tYMANlqN
>>753
言語仕様の理解においてはJavaの経験は不要

ただし事例のWeb検索に関して
「Javaでこう書いてるってことはKotlinだとこう書くんだろうな」
「欲しいJavaの処理はだいたいこのへんだろうからここをコピペしてIDEで自動変換しよう」
というようなことができる程度の「Javaプログラムを読める力」が実際には必要
でもまあネットでJava入門を3日かけて最後まで読んで身につく程度があれば充分なのでそれこそ他言語経験があれば問題はないね
0755デフォルトの名無しさん
垢版 |
2017/10/07(土) 14:59:26.09ID:lxJ0Yf9D
>>754
ありがとうございます
kotlinがandroidの開発言語としてサポートされることになったので試してみたいなーと思ってたんでアプリ作ってみます
0757デフォルトの名無しさん
垢版 |
2017/10/07(土) 19:18:53.56ID:rBYfi2xH
変数に入れた文字列でメソッドやプロパティを呼ぶことはできますか
val mes = "toUpperCase"
someString.callMethod(mes, null)
これでsomeString.toUpperCase()のかわりになるみたいなやつです
0759デフォルトの名無しさん
垢版 |
2017/10/07(土) 19:33:19.97ID:+RQU5E5j
それにしてもAppleがObjective-CにSwiftを追加したと思ったらGoogleがJavaにKotlinを追加してどいつもこいつもまったく...
0761デフォルトの名無しさん
垢版 |
2017/10/07(土) 22:16:30.42ID:f9dDdlSq
ことりん(*´ェ`*)ポッ
0766デフォルトの名無しさん
垢版 |
2017/10/07(土) 23:38:16.22ID:f9dDdlSq
>>757
君の言いたいことがよくわからない。
0767デフォルトの名無しさん
垢版 |
2017/10/07(土) 23:51:42.16ID:2fKU1//d
何言語からやってきたかは知らんが動的系のevalがほしんだろ
Reflectionするしかないかな
0769デフォルトの名無しさん
垢版 |
2017/10/08(日) 01:14:02.14ID:93IJP3PA
>>757
KFunctionのcall

val kclass = YourClass::class
val function = kclass.functions.find { it.name == "method_name" }
val instance = YourClass()
function?.call(instance, args)
0771デフォルトの名無しさん
垢版 |
2017/10/08(日) 01:57:15.44ID:32PQUixn
Rubyでもメソッドのオブジェクト化を稀に使う

irb> "a=b=c".split("=")
=> ["a", "b", "c"]
irb> "a=b=c".method("split").call("=")
=> ["a", "b", "c"]
irb> "a=b=c".send("split", "=")
=> ["a", "b", "c"]
0772デフォルトの名無しさん
垢版 |
2017/10/08(日) 02:41:05.63ID:c+/m9riq
あ、ようやっと何言ってるかわかったw
0773デフォルトの名無しさん
垢版 |
2017/10/08(日) 21:54:57.44ID:32PQUixn
IntelliJとSpekでSpecファイルひとつのテストってできないのかな
なんかできそうだけどいまいちよくわからんエラーが
これってそもそもできるもんなの? 俺がなんか悪いだけ?
0774デフォルトの名無しさん
垢版 |
2017/10/09(月) 19:59:00.68ID:3clxx/P9
リストを先頭からN個に分割というのを一発でできたりしない?
["a","b","c","d","e"] を2つずつ分割して [["a","b"], ["c","d"] ,["e"]] にしたい
0775デフォルトの名無しさん
垢版 |
2017/10/09(月) 20:53:05.90ID:sCOU7I7y
>>740
その本さっき紀伊国屋で買った
0776デフォルトの名無しさん
垢版 |
2017/10/09(月) 21:17:44.65ID:bvkIQjV4
その本もさ、Kotlin本の選択肢がないから仕方なく買うってレベルの本だよな
あの初心者向けの無駄にポップなレイアウト、なんとかなんねえのかな
内容の割に無駄に重いし分厚いし、技術書なんて無地の紙でいいんだよ
0779デフォルトの名無しさん
垢版 |
2017/10/09(月) 22:34:41.54ID:c41RoAYB
言語は道具であってそれを使って何を作るのかが重要なわけだがKotlinによって何か革命が起きる見込みでもあるのか?
それともモダンな何かをいじってる自分が好きなだけ?
0780デフォルトの名無しさん
垢版 |
2017/10/09(月) 23:58:04.80ID:tFlwnlNI
>>779
同じことやるのでもJavaより記述が楽そうな感じがするからだ。
更にこれまでのJavaの資産を使えるのが良い。
0781デフォルトの名無しさん
垢版 |
2017/10/10(火) 00:00:43.01ID:jM5sd94/
どんどん高級度が増して行ってそのうち人間はなぜソフトウェアがCPU上で動いているのかその仕組みを知る人がいなくなるのですね
そしてAIと対峙しなければならなくなったとき誰も対応できなくなる
そういう未来が待っているのでしょう
0782デフォルトの名無しさん
垢版 |
2017/10/10(火) 04:02:27.77ID:Q5yhaeDv
>>776
ま、今後に期待だな。

一応 Google が Android 用として採用したんだから入門書は他にも出てくると思う。
ネットの情報も増え続けるだろう。
0783デフォルトの名無しさん
垢版 |
2017/10/10(火) 10:24:21.67ID:8V61cfLq
いままでひらがなだけのぶんしょうだったのがかんじがつかえるようになったというかんじだ
そりゃ最終的な音としては漢字があっても無くても変わらないかもしれないが、漢字を理解していれば読みやすく書きやすい
長文を書きやすくもなるだろうし、そこから生まれるものもあろう
個人的にはスクリプト言語のような立ち位置だと思っている
0785デフォルトの名無しさん
垢版 |
2017/10/10(火) 22:21:41.00ID:FWHsF53j
>>784
なんだ、日本語訳でるのか。頑張って洋書の方読んでるけど、理論だてて書いてあるのでわかりやすい。ところどころJavaとの比較があり、Javaの知識がないとちょっと苦しいとこあるかも。あとTry Kotlinでサンプルもあるよね。
0786デフォルトの名無しさん
垢版 |
2017/10/10(火) 23:01:05.11ID:Z3ZusD4X
in action は上級じゃないよ
プログラミング初心者向けじゃないけど
最初の1冊に選んでいい本
0787デフォルトの名無しさん
垢版 |
2017/10/10(火) 23:25:19.52ID:VPwnJAPN
日本語の技術書とかネットの情報でも日本語のものだと実務に使えるレベルに達しなくなってきてるよね
日本はIT後進国になってしまったんだと常々感じる
0788デフォルトの名無しさん
垢版 |
2017/10/10(火) 23:37:43.52ID:ZTVh7Eud
>>787
テクノロジーの移り変わりが早すぎて、一次リソースを参考にした方が効率的だし、わざわざ日本語に訳す必要もないから
0790デフォルトの名無しさん
垢版 |
2017/10/10(火) 23:42:30.50ID:gasOXxRr
一昔前はtronとかあったやん
今の日本はなにもない
0791デフォルトの名無しさん
垢版 |
2017/10/11(水) 00:08:24.55ID:YuycjJaM
最速だからいいということばかりでもない
周回遅れでも構わない情報のほうが世の中には多い
Kotlinスタートブックは1年以上前の刊行だけど使えないゴミだと言う人はまともな人にはおるまい
0793デフォルトの名無しさん
垢版 |
2017/10/11(水) 00:18:15.85ID:EN0HNRmd
これからなればいい
0794デフォルトの名無しさん
垢版 |
2017/10/11(水) 00:23:02.14ID:JdWo4X1f
Androidの技術書見ても現在主流の
RxJava, databinding, MVVM, flux, redux辺りの解説をしている本が全然ない
Androidだからまだネットで日本語の情報多いけど、
iOSになると本当に英語の情報しかなくなってくる
本当に駄目な国になってきている
ニュージーランド辺りに脱出した方がいいんじゃないかと思ってくるレベル
あっちはプログラマーの年収1000万らしいし
0796デフォルトの名無しさん
垢版 |
2017/10/11(水) 00:31:11.36ID:JfiRQ2Rl
むしろ英語を使うようになったからでは
日本語の書籍は高いし遅いし
0798デフォルトの名無しさん
垢版 |
2017/10/11(水) 00:33:36.19ID:EN0HNRmd
そしてみんなが苦もなく英語が読めるようになった頃、完璧な自動翻訳が完成する。
■ このスレッドは過去ログ倉庫に格納されています

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