Kotlin 2
■ このスレッドは過去ログ倉庫に格納されています
>>178,185
誤 : JetBrain
正 : JetBrains >>189
ifの中括弧省略と一緒と聞いて本当にわからないのであれば重症やな >>191
煽ってくる意味が分からない
具体例を示すだけだと思うんだが・・・ >>176はそんなにopenとcloseをしないといけないのはクラス設計に問題があるのではないだろうか。
そこまでしないといけないことが頻繁にあるケースはまれだと思うので、拡張関数を定義して解決しては。
あと、個人が気に入らないと思うたびに構文を増やしたらC++みたいになるのは歴史が示すところかと。
>>173
Kotlinでは>>176のケースはif式のように{}を省略することはできないような気がするのですが。
省略できても見かけのブロックがなくなるだけで、多重ネスト構造なのは変わらない気がする。 >>191
俺も分からないので是非書いて欲しい。
こちらはKotlin学習中なので重症ではない。単にわからないだけだ。 >>177
File.open(ファイル名) do |file|
処理
end
Ruby では、File.open()に、クロージャの実装である、ブロックを渡すと、
close()する必要がなくなる。
自動的に内部的に、例外処理で囲んで、finally で、close してくれる
たいていの言語で、そう JVM版とNative版など環境がいくつかあるけど、標準ライブラリは基本共通なの? こういう風に違うシグネチャの関数の参照はどうしたら良いのか?
https://ideone.com/jXVu5V 未対応なので回避策とるくらいしか
val fa = {n:Int -> f(n) }
val fb = {n:Int, s:String -> f(n, s) } あ。未対応だったのか。どうりでいくら調べても見つからないと思った。
それならそんな風に書くしかないね。 >>200
おー。なるほど。ありがとう。
まあでも自分でシグネチャ指定して振り分ける感じに書く必要はあるということだね(Cでの関数へのポインタみたいなもんだからそうならざるを得ないか)。 あるメソッドの中の処理を切り出して作った1行系プライベートメソッドってあるよね
親メソッドの前に書いたほうがいい? 後に書いたほうがいい?
親メソッドに長いJavaDoc、または長めのコメントがある場合、前に書いちゃうとプライベートメソッドが離れちゃって見難い/醜いよね
// subするメソッド
private fun subMethod() = ...
/*
* メインなことをするメソッド
* がんばってつくりました
* 3行も説明書いたのでボーナスください
*/
fun mainMethod(arg: SomeObj){
...
}
そういう意味ではメインのあとに書いたほうがいいんだけど、親メソッド読んでる最中に見たことないメソッドが出てきちゃって「ん??」ってなるよね
fun mainMethod{
...
....subMethod(...) ← えっコレ何?
}
private fun subMethod() = ←定義ここかよおせーよ
Java書いたことないからこのへんの作法わかんないんだけど、なにか傾向とかあるのかな IDEの機能で定義に飛ぶから別に気にならない
ソースファイルを上から順に眺めていくってあんまりないなあ どっちでもいいけど自分は後ろ。
定義なんてIDEでジャンプできるんだしどうでもいいでしょ。 >定義に飛ぶから
>定義なんてIDEでジャンプできる
なんだよ
(いろいろ眺めつつ)IntelliJ IDEAではF4かな。とう。おお。…さっきのとこ戻るにはどうすればいいんだろう
https://youtrack.jetbrains.com/issue/IDEA-119474
無理か。まあいいや
いや、それにしても固めて書いておく時の一般的なやり方とか見てて迷わない書き方とかあるのかなーと思って >>206
subMethodのKDocをしっかり書いておけば、ジャンプしなくてもマウスオーバーで
何をするメソッドかわかるから後置でいいのではと思う。 戻るのはデフォルトだとたぶん Ctrl+Alt+左
定義に飛んでその後戻るのをキーボードで素早くできるようにしとかないと作業が捗らんから、
おれはどんな環境でもAlt+ピリオドとAlt+カンマにカスタマイズする
たまにカスタマイズできない環境もあるが >>206
F4ではなくCTRL+マウスクリックじゃない? F4 は "Jump to Source" で、Ctrl+Button1 は "Decraration" だね
両方とも定義へ飛ぶけど、定義を選択して操作したときに "Decraration" のほうは使用箇所へ飛ぶメニューがでるね
おれは間違えて押したときにメニューでるのが面倒なのでキーにカスタマイズして使ってるのは "Jump to Source" の方
使用箇所へ飛びたいときには Find usages を使うし あー
F4でjump to sourceし
CMD+F4 (Macの場合)でタブクローズすればいいんじゃない
あと、quick definitionってのもある vimのプラグイン入れてるけどcommand+[ですぐ戻れる 基本はそれですね、開いたタブを同時に閉じたい場合はcloseかな Jump to SourceとDecrarationの違いを、もうひとつ見つけてしまった
DecrarationはAndroid環境だとリソースIDからレイアウトXMLへ飛んだりもできるのね
Jump to SourceだとリソースIDそのものの値を定義してるファイルに飛んじゃうので意味無い
やっぱデフォルトはDecrarationにしよう・・・ haskellとか知ってると、まず宣言的コードがあって実装はあとからついてくるコードスタイルでも違和感はない。
トップダウンで見るかボトムアップで見るかの違い。 まあ、IDEさまさまなところはあるにはある
IDEがなかったら全然違っていただろうなと思う事象は多い IDEってEclipse?AndroidStudioのベータ? JetBrains製以外のIDE使ってる人居るのかな
Vimは居そう >>217
そら第一候補はIntelliJでしょ
≒ Android Studio Eclipseとか原始時代の道具をまだ使ってるやつがいるのか ん?でも Linux でも IntelliJ 使えるよ。 ああ。まあ。確かにviってかvim使う方が多いが、さほど困らんなあ。 リモートデスクトップ経由でLinuxのIntelliJ&Android Studio使ってうっひょーって言ってるよ
Emacsのkotlin-modeがぜんぜんイマイチなのはIntelliJ IDEAのせいではないかと思っている >>226
IDEAがあるせいで他がしょぼいというより、Kotlinの歴史の浅さやまだゴミのようなシェアの割にはIDEAの出来が良いんだろ
Kotlin自体がJetBrainsによってIDEAで使うために作った言語なんだから当然 Kotlinはidea以外の環境を最低一つサポートしろよな。自社でIDEを売ってるからやだとかはやめてくれ。
VisualStudio Codeかatomのどっちかの軽量環境は最低どちらかサポートしろよ。 言語提供側がすべきなのは処理系の提供であって
IDE云々で文句を言うのは筋違い それは処理系に言う筋合いのものではないが。
最近のエコシステムに慣れすぎるとそう言いたくなるのはわからんでもないが。 使う側からしてみれば、言語提供側だろうが処理系だろうがどうでもいい。
ユーザーにとって使いやすくしたいとおもってて、他がやらないなら
最終的に言語提供側が提供すればいいだけだし。 もちろん、JetBrainsの開発リソースも限られてるが、そんなの使う側からしたら
それもどうでもいい。使いやすければユーザーが増える可能性あるし、使いにくければないだろう。
ただそれだけ。 >>235
1行目からして意味が分からん
処理系が何か分かって書いているのか? >>237
ごめんごめんww
「処理系」に関してはそれは完全にとちくるってた >使う側からしてみれば、言語提供側だろうが処理系だろうがどうでもいい
は
>使う側からしてみれば、言語提供側だろうが言語提供側以外だろうがどうでもいい
あたりでw 時代はジェットブレインなんだよ
MicrosoftのVisualStudioとかいう原始時代の道具は時代遅れ Kotlinで文字列を返すenumを使うときは、
やっぱりJavaと同じようにnameとかtoStringを呼ばないといけませんか?
例えば↓のようなenumがあったときに
enum class Name(name: String) {
Foo("foo")
}
"foo"を使うときはこうすると思います
val name = Name.Foo.name()
しかし、name()が気に入りません。↓のようにはできませんでしょうか
val name = Name.Foo >>240
骨董品UNIXより常に20年先行ってる。 >>241
MS製JVMは性能が良すぎてみなそれを使うようになり、Sunに訴えられたから捨てたんだぞ。 >>243
Name.Fooがenumのメンバーを返さないのなら、enumじゃなくてもいいのではない? 今やUnix向けの開発者も揃ってVSCodeだもんなあ
開発環境ではMSには敵わないよ
Kotlinは遠からずVSCodeに持ってかれるだろうけど、そうなったらJetBrainsはどうするんだろうね アホすぎ
ジェットブレインの開発環境を使ってないのは
IT後進国の日本だけだぞ >>249
そうかもしれません
Kotlinで文字列の定数をまとめて扱うにはどうするのがベストですか? >>250
> 今やUnix向けの開発者も揃ってVSCodeだもんなあ
を3回くらい読んで何を指してるのかなんとなくわかった
サーバサイドのスクリプト言語プログラミングもVSCodeで行われることは増えた
EmacsでFTPやらSSHやらして一生懸命書いてた頃とは隔世の感はある
(いや、まあ、ぶっちゃけるなら、Emacs+xx-modeがVSCode+プラグインに置き換わっただけではあるが)
VSCodeはElectronを捨てることができた瞬間に勝利が確定する >>250
資金力ではMSに太刀打ちできるはずのないJetBrainsはGoogleに買収されるべきなのだろうか。
>>241
むしろMSはJ#の時代から.NETさらには最近のXamarinの買収まで一貫してJavaに敵対的だよね。
>>228
めでたい。 >>253
捨てたらもうそれVSCodeじゃない気がw >>252
Javaからの見え方を気にしないのならこれでもいいかな?
object Name { val Foo = "foo" } >>256
なるほど、これでいっぱいval書いたら良さそうですね
ありがとうございました IntelliJをバージョンアップしたらSpekテスト設定のSpec欄ヨコのSearch by Nameが動かなくなった
これまではモジュール適当に指定したら勝手に探して候補出してくれてマウスぽちぽちで済んだのだが、なんかspec欄を自力入力で埋めないといかん
それともこれは普通は使わない所だったのだろうか 多分日本で俺だけだろうけど、
Kotlinの公式PDFはフォントのAlignがずれてて
読み始めて1分しない内に直視に耐えられなくなってしまう…。
直そうと頑張ってみたが有料ソフト使うしかないみたいで諦めた。
しかし治ってたら嬉しいなと定期的にダウンロードし直してしまう。 "sourcefiles"という名の.ktソースファイル名一覧ファイルを作り、
kotlinc @sourcefiles
を走らせると、
error: source file or directory not found: @sourcefiles
が画面に表示されてしまいます。
javac @sourcefiles
scalac @sourcefiles
に相当する機能はkotlincには無いのでしょうか? 質問の答えは知らないので他の人に任せるけど
ビルドはkotlinc直よりGradle使うことを勧める またそんなこと言って。
あなたはいつも他人任せね。
いいかげん私も待ちくたびれちゃうわ。 >>262
正しい
可能ならIDE使って欲しいけどね
いまはgradle安定 Gradle, Vagrant は、yaml, XML, JSON のような、単なる設定ファイルではなく、
それ自体が、Groovy, Ruby の、クロージャ・ブロックで囲まれた、
スコープを持つソースコードであるから、変数宣言や処理も書ける >>265
キモい
>>263
たとえ女だとしてもキモい。やるならもっと自然な文体にしてくれww リアルの女と接点がなく、妄想で女はこうだろうと決めて話してるのがわかる
昭和生まれのジジイですわ Kotlin Advent Calendar がAndroid以外の話題多めだな
ここでナチュラルにIntellijIDEA の話題だしちゃったけど
Android以外の人も IntellijIDEA を買って使ってるのかねえ? 12/18にこの本が出るようだ。Amazonには本の表紙画像がまだ出ていない。
Androidアプリ開発のためのKotlin実践プログラミング
http://amzn.asia/4GO28m2 KotlinはAndroidが対応したってだけでそのためだけに使う人は少数派やろ いやあ、しかし楽にはなりそうだからねえ、流行ると思うけどねえ。 >>260
Adobe readerじゃダメなの? cmで始まってdpで終わってるからどこかのレビューページから飛んだURLだと思うんだが
なにもしないとcm_cr_dpなんだけどな
cpが入ってるってことは「この商品を見た後に買っている」を1回表示してるのかもしれない cm_sw_ ... _dp はシェア用URLの生成形式だね
ツイッター用ならcl_twで超わかりやすいんだがr_cp_epはなんだろう >>284
それはわからんが>>278のリンクはAmazonで「シェアする」のリンク使って出てきたURLだよ。誰がやっても同じになると思う。 lateinit var value: Int
って書いたら'lateinit' modifier is not allowed on properties of primitive typesのエラーになるんですが、
どう書き直したらいいんでしょうか
var value: Int? = null
って書いて、
if (value == null) {
value = initValue()
}
ってするしかないんでしょうか。 ■ このスレッドは過去ログ倉庫に格納されています