プログラミング言語 Scala 11冊目 [転載禁止]©2ch.net

レス数が900を超えています。1000を超えると表示できなくなるよ。
2015/08/28(金) 07:25:25.39ID:YozprJV9
The Scala Programming Language
ttp://www.scala-lang.org/

日本Scalaユーザーズグループ
ttp://jp.scala-users.org/

■前スレ
プログラミング言語 Scala 10冊目
http://peace.2ch.net/test/read.cgi/tech/1390629242/

■Scalaの紹介文(さわり)
Scalaは簡潔かつ優雅で型安全な方法でよくあるプログラミングパターンを表現できるように
設計された汎用プログラミング言語です。
Scalaはオブジェクト指向と関数型言語の特徴をスムーズに統合しておりJavaやその他の言語を扱う
プログラマをより生産的にすることができます。(以下略)
ttp://www.scala-lang.org/node/25

■Scalaに関する書籍(英語)
ttp://www.scala-lang.org/node/959
リファレンスマニュアルや草稿のPDFなども充実しているのでそちらも参照してください。
日本語の資料には、チュートリアルの訳やIBM dW、IT Pro, @ITの連載記事、各々で開かれた勉強会の資料などがあります。
2017/06/18(日) 11:42:27.42ID:8hGvE46a
はてぶの特集見たか?
あそこにKotlinが載るようになったんだぞ?
一度でもScalaなんか載ったことあったか?

そういうことだよ
2017/06/18(日) 12:06:00.53ID:F94toio2
関数型プログラミングについても(Scalaで満足しているのであればの話だが)そもそもKotlinでだいたい問題無いからな
大きな違いはimplicitが無いくらいじゃないの
それも一般的にはむしろ大きなメリットと捉えられるだろうし関数型に必要な機能というわけじゃない
2017/06/18(日) 12:35:28.54ID:Ng4v29lJ
このスレでKotlinの話しだす人の目的がよくわからないな
俺はKotlinも大好きだよ
2017/06/18(日) 19:18:34.18ID:8hGvE46a
せいぜい航海関数が使いやすけりゃそれで十分なんだよな
あとはヌル安全
関数型なんて大仰なこといって、これくらいしか使ってないだろ実際おまえらさんも

つーことは、さ、つまり、わかるよね?
2017/06/18(日) 19:20:08.35ID:8hGvE46a
>>808
JVM最強決戦でScalaは負けて、Kotlinが勝った
話題にするには十分な理由だろう?
2017/06/18(日) 20:46:17.21ID:+b8reTFO
>>810
でもなぜかKotlinを推す人間は糞ジャップとかいう汚い言葉を使ってるんだよな
糞ジャップはPerlかPHPしか使っちゃいけないはずなのにさ
812デフォルトの名無しさん
垢版 |
2017/06/18(日) 21:10:13.83ID:1yKKxTZY
サーバーサイドならScala圧勝なのは変わらん
クライアントならKotlinの方が良いけど
似たようなものだから使い分けろ
2017/06/18(日) 21:46:27.01ID:Ng4v29lJ
勝った負けたってそんなに大事な視点なのかな?
本質を見誤っていると思うのだけど
2017/06/18(日) 21:50:19.29ID:j9MOD7iX
なにをもって勝ちと言ってるのかな?
これからAndroidではKotlinが主流なるからシェアで負けるってこと?
シェアが増えれば勝ちで勝ってるほうがいいならScalaはJavaやPHP等々に負けてるわけだからそっちやればいいのに
2017/06/18(日) 22:45:37.36ID:8hGvE46a
>>813
じゃあ完全負確塵屑糞尿吐瀉物ペチプーでも使ってりゃええねん

>>811
使っちゃいけないなんて、僕は思わないな
でも、それくらいしか使いこなせないだろ、って連中は多いだろ
日本のIT(笑)なんて韓国以下、最近まで土食ってたイン土人にすら劣ってるし
2017/06/18(日) 22:49:37.80ID:+b8reTFO
>>815
やっぱりこいつかって感じだね

もうこのスレでやたらKotlin推してる人間は疑ってかかった方がいいね
2017/06/19(月) 00:17:07.65ID:1dMH0+Na
>>816
お前もちょっと頭冷やした方がいい
2017/06/19(月) 05:54:06.80ID:Mr+u11Xq
こういうのが建設的な議論もせずに私怨で言語を貶して粘着し続けてるんだから2chは魔窟だわ
そりゃあ知識も逃げていくわけだよ
2017/07/09(日) 01:04:43.19ID:vvtk1U94
知識どころかユーザも逃げてしまったな
ああKotlin
2017/07/09(日) 08:09:38.01ID:Ed3vJGt7
またか
2017/07/09(日) 11:43:14.40ID:vvtk1U94
ぶっちゃけ、KotlinにはScalaみたいなスター性みたいのが感じられないんだよな
Scalaやってますって言われたらオオッってなるけど
Kotlinやってますって言われてもアッフーン程度じゃん
でもこれが初心者でもとっつきやすさに繋がっていいってことなのかな
わかるやつおらん?
2017/07/09(日) 21:04:52.08ID:Grj4ijvD
スター性って要するに習得難易度が高いって意味?
難易度に見合ったメリットとか独自性がないと簡素な言語に流れるのは当然だなあ
Scalaが爆発的な人気を得ることはないだろうなと思ってるが少数精鋭でいいとも思ってる
2017/07/09(日) 21:23:26.66ID:D6wbxEsu
ScalaがRubyを追い越しそうな勢い
http://pypl.github.io/PYPL.html
2017/07/09(日) 22:28:32.51ID:TMdhC0Rp
>>822
書いてる俺カッケー感だよ
KotlinはなんかJavaがすっきりした程度だけど
Scalaだとウオオってなるじゃん
2017/07/09(日) 22:31:36.60ID:TMdhC0Rp
>>823
早く追い越してくれ
動的型のゴミオモチャはPythonだけで十分だ
屁臭いペチプーも詐欺師ルビーも公害粗大ゴミのペェ〜ルも
全部要らん
書いてるやつほんとにマウスで殴り殺してやりたい
2017/07/09(日) 23:05:21.38ID:Ed3vJGt7
>>825
ぜひやってくれ
そして社会から消えてくれ
2017/07/09(日) 23:14:27.89ID:Grj4ijvD
>>825
高校生?
2017/07/28(金) 23:06:38.60ID:PUrhlE/b
>>824
そうかなあ
implicitを使ったトリッキーなパターンを生産するたびにウェッってなるわ
2017/07/29(土) 00:02:15.85ID:BsfT91Ig
>>828
implicitはアドホック多相専用にしちゃえばそこまでウェッってならないよ
2017/07/29(土) 12:26:37.74ID:JFgIXVoU
アドホック多相という単語にウェッってなっちゃった僕はどうしたらいいですか?
2017/07/29(土) 12:53:41.45ID:BsfT91Ig
>>830
Scalaが合ってないとしか言えない
2017/07/29(土) 13:30:35.81ID:JFgIXVoU
>>831
ファ!?
こんなんだからお前らはコトリンに負けたンゴよ!
2017/07/29(土) 14:23:56.93ID:BsfT91Ig
またこいつか
2017/07/29(土) 14:30:28.93ID:JFgIXVoU
またおまえか
2017/07/29(土) 15:03:19.22ID:JFgIXVoU
1ヶ月間衰えぬことを知らない中学生の勃起チンポのようなコトリンと
1ヶ月ぶりにレスがついたと思ったら死にかけの爺の老害レスばかりのスカラ


どうしてこうなった
2017/07/30(日) 21:25:05.92ID:ZTCdbi3s
その煽り癖コミットログに滲み出るからやめたほうがいいよ
837デフォルトの名無しさん
垢版 |
2017/08/10(木) 01:39:13.07ID:BTkUJFH3
その煽りtwitterでやってれば
2chにScala使いなんてそもそも少ないんだから
2017/08/10(木) 06:36:42.05ID:BXUbqcL4
全世界的に少ないだけだろ・・・
2017/08/11(金) 01:48:39.64ID:kiDXFYyg
プログラミング言語別の平均年収ランキング、1位は「Scala」
http://www.itmedia.co.jp/news/articles/1708/10/news073.html
840デフォルトの名無しさん
垢版 |
2017/09/16(土) 07:17:30.81ID:AcW1bn43
>>839
大規模案件に使われてて需要があるのか?
2017/09/16(土) 10:18:12.98ID:V14IDsXj
Scalaを採用する企業の年収が高いという落ちでは
2017/09/16(土) 14:54:25.78ID:ixWS+PsT
棒チャットのあれ、チャットのアレが日本語化して大変そうだな
せっかくゴミ屑のペチプァ捨ててScalaにしたのに
ペチプァのサゲマンっぷりはすごいな
2017/09/17(日) 04:33:22.59ID:5DAGa3Dm
大企業だから大規模案件を起こせて
社員の年収も高いって考えても
常識的におかしくないな
2017/09/22(金) 21:50:10.96ID:AwTIidLd
コンパイル遅すぎ
2017/09/24(日) 23:50:30.25ID:r21Vruvq
Dottyってコンパイル時間も早くなるんだっけ
2017/09/25(月) 01:14:08.23ID:LHq9Z9Zz
それ半年以上前から言ってるよね
本当なのかな

てかもはや
早くするのが遅すぎたね
Kotlin・・・
2017/09/26(火) 03:50:18.51ID:w3seKs+r
KotlinがAndroid公式言語になってから
すっかりScalaの勢いが衰えたな
2017/09/26(火) 06:32:14.15ID:2GJIBjiK
むしろどんどん色んなライブラリやプラットフォームができてるけど
https://scala.epfl.ch/
https://www.scala-exercises.org/
2017/09/26(火) 06:39:31.34ID:2GJIBjiK
途中送信してしまった
https://scala.epfl.ch/
https://typelevel.org/
https://www.scala-exercises.org/

コンパイラ開発やマルチプラットフォーム、マルチスクリーン、プログラミングパラダイムにドキュメント整備
いろんな方向へ発展していてたまに覗くと面白い
2017/09/26(火) 09:17:58.86ID:SmezMtDi
現実を見てない空盛り上がり
そんなこと言ったらペェチプァだった盛り上がってますわ
851850
垢版 |
2017/09/26(火) 11:19:35.74ID:yOG1OpGO
すまん。仕事でイライラして難癖つけるだけのレスしちまった。
無視してくれ。
2017/09/26(火) 15:55:40.67ID:mxjxf1zo
>>851
いいのよ
2017/09/26(火) 17:40:52.02ID:O7/Ue20b
Javaはうんざりしてるので違うことやりたいと思う人にKotlinより
Scalaの方が良い点はなんだろう。
自分はScalaからKotlinに引越中だけど…。
2017/09/27(水) 01:49:22.74ID:0UMyaADl
関数型
2017/09/27(水) 20:23:38.93ID:PWLdOFze
>>849
どんどんハッテンしてきてるね
2017/09/27(水) 20:30:38.87ID:0UMyaADl
ハッテン場っスカラ
2017/09/29(金) 00:36:14.89ID:dKsSARYE
ちょっと基本的な質問。

val a = Array("a","b","c")
a(0) = "ABC"

val は更新不可だと思ったんだが、フツーに通ったんですよ。
こりゃいったいどういうことですかね。
ちょっと不思議でして。
2017/09/29(金) 00:41:32.11ID:dKsSARYE
コップ本第3版のp.061の真ん中あたりの説明だと思うんですが、
いまいちわかんないんですよね。
ポインタ的なアレすかね。
2017/09/29(金) 01:10:02.39ID:Ngojf8tw
>>857
a は Array というコンテナを他の値に変更しちゃだめだと言ってるだけで、コンテナの中身を変更
しちゃだめだとは言ってないから

コンテナの中身も変更不可にするためには、変更不可コンテナを使わないとだめ
2017/09/29(金) 02:34:10.78ID:dKsSARYE
あ、なるほど、変更不可コンテナがあるんですね。
ありがとうございます。

ちょっと別件で一個、ベテランの書き方を聞いていいですか。
具体的には、PaizaD006とかなんですが、文字sがkmの場合、mの場合とかで数値を適当に求めるパズルなんですが、
関数言語っぽく書くとどうなるんでしょうか。
var ans = 0L
if ( s == "km") {
ans = n * 1000 * 100 * 10
} else if ( s == "m" ) {
ans = n * 100 * 10
} else if ( s == "cm" ) {
ans = n * 10
}
println(ans)
動くは動くんですが、もっと関数型っぽい書き方があるのではないかと思いまして。
2017/09/29(金) 06:45:47.52ID:t98OlUL1
Paizaの問題を具体例出して答えるのはまずい気がする
パターンマッチングで調べるといいよ
2017/10/04(水) 23:54:02.72ID:VzltHPaW
Project AmberのおかげでますますScalaちゃんが用済みになるね
やったね!
2017/10/23(月) 19:25:42.52ID:JXLQFPJl
最近ここ息してないなー
864デフォルトの名無しさん
垢版 |
2017/10/23(月) 19:51:29.08ID:1HzbJqCQ
数年前まで盛り上がってたのにね
なんでだろうね
2017/10/23(月) 20:52:53.20ID:Y0tE+5bm
Kotlinに負けGoに負けRustに負け、勝ってたはずのJavaにすら負け

檄遅低脳コンパイラと
オタクのマウンティングのための糞記号祭りで
何もかも失ってしまったね

後に残るはPHP並の負債のみ
悲しいなぁ
2017/10/23(月) 21:24:54.05ID:mFtK+01O
はいはい、そういうのいいから
2017/10/23(月) 23:09:59.66ID:Y0tE+5bm
PHPという糞の山にScalaとかいう糞を混ぜ込んだ究極糞大山のSlackのパ●リはどうなりましたか?(凍え)
2017/10/24(火) 11:19:16.35ID:/9GfC2RA
コンパイル速度はdottyさんが何とかしてくれんじゃなかったっけか
2017/10/24(火) 20:43:17.73ID:7YjoqPIK
sbtが蛇足だった

ScalaCheckはよかった(今もあるが)
2017/10/26(木) 00:32:32.61ID:zsf3GtyN
>>868
それ3年くらい前から言ってない?
ドッティはドコッティ?
2017/10/26(木) 00:33:02.66ID:zsf3GtyN
ドッティはドコッティ?

これは流行る
糞ペチプァにすら負けたドッティはドコッティ?
2017/10/26(木) 07:22:52.24ID:RVAurVuw
自分の発言に自分でウケてやがる
アルツ一歩手前の症状だな
2017/10/26(木) 14:57:19.82ID:UiPgHD+D
この言語やたら変な奴に粘着されてるな
2017/10/27(金) 06:57:47.25ID:iql/A60C
ドッティはドコッティ?
2017/11/05(日) 21:27:16.45ID:wTe1xxd0
ドッティはドコッティ?
2017/11/13(月) 22:16:12.43ID:IfkrQMwx
いつの間にかverupしてるな

そして全く話題にならんという
2017/11/14(火) 10:39:12.15ID:bpI4aGyU
どうしてこうなった
878デフォルトの名無しさん
垢版 |
2017/11/14(火) 13:36:02.87ID:yxhOAHxu
スッカラカン
2018/02/13(火) 22:37:30.82ID:FaQz+H4O
a
2018/03/03(土) 09:06:51.23ID:Jf3oQYha
これから始めようかと思ってるのにオワコンなんか?
881デフォルトの名無しさん
垢版 |
2018/03/22(木) 03:49:55.89ID:IlQ6IwQY
別にオワコンじゃないと思うが
882デフォルトの名無しさん
垢版 |
2018/03/22(木) 10:16:53.80ID:Q2/ylW7b
人生楽ありゃ苦もあるさ
後から来たのに追い越され
883デフォルトの名無しさん
垢版 |
2018/03/23(金) 03:24:14.01ID:ZVKcVlB+
JavaのObject ArrayをscalaのArrayに変換する方法を教えてください。
Arrayには数値が入っていますが、Object型だとscalaでの計算に使用できず困っています。

Javaとの相互運用は色々と癖がありますね……。
884デフォルトの名無しさん
垢版 |
2018/03/23(金) 07:02:14.80ID:X8WMZJVU
実体が java.lang.Integer[] な java.lang.Object[] を Array[Int] として扱いたいって意味なら
こんな感じでできる

val javaArray: Array[Object] = Array(new Integer(2), new Integer(3), new Integer(5))
val scalaArray: Array[Int] = javaArray.map(Int.unbox)
885デフォルトの名無しさん
垢版 |
2018/03/23(金) 11:58:31.85ID:ZVKcVlB+
>>884
返信
886デフォルトの名無しさん
垢版 |
2018/03/23(金) 12:52:48.44ID:ZVKcVlB+
>>884
返信ありがとうございました。目的はお察しの通りです。

下記のエラーで通らないようです。
missing argument list for method unbox in object Int
Unapplied methods are only converted to functions when a function type is expected.

java.lang.Objectなのは間違いないですが、java.lang.Integer[]かどうかの確認も厳しいです。
インタプリタの出力はObject = Array(数値1、数値2、……)という状況です。

Javaは型の確認や変換関係がドロドロですね……。
pythonやC#から比べると難易度高いです。
887デフォルトの名無しさん
垢版 |
2018/03/23(金) 13:26:03.77ID:U3ze5amU
最後の2行みたいな事は火種にしかならないのに
どうして書いちゃうんだろうねえ
888886
垢版 |
2018/03/23(金) 13:59:33.13ID:ZVKcVlB+
>>887
3日ほど進捗なしで心が折れてます。

getClass()でclass [Dと出るのでArrayかつDoubleのobjectのようです。
APIにはjava.lang.Objectと書いてあるのですが。

何をやってもvalue ×× is not a member of Objectと出るので
死にたくなってきました……。
889デフォルトの名無しさん
垢版 |
2018/03/23(金) 14:16:23.25ID:X8WMZJVU
とりあえずこんな風に書いてみてObjectの実体が何なのか調べてみたら

val javaArray: Array[Object] = Array(new Integer(2), new Integer(3), new Integer(5))
val objectTypes = javaArray.map(_.getClass.getName).distinct.mkString(", ")
println(objectTypes)
890デフォルトの名無しさん
垢版 |
2018/03/23(金) 14:29:48.12ID:X8WMZJVU
ひょっとしてこう書けば解決する話なんじゃないの
javaArray.map(Double.unbox)

それと『計算に使用できず困ってる』ってアバウトすぎてよくわからないよ
2018/03/23(金) 14:40:41.56ID:ZVKcVlB+
>>889
ありがとうございます。
value map is not a member of Object
でエラーになります。

関数の元は下記です。
https://www.unidata.ucar.edu/software/netcdf/java/docs/ucar/netcdf/RemoteAccessorImpl_Stub.html#toArray(java.lang.Object,%20int[],%20int[])
1次元配列で戻すと書いてありますが……。
892デフォルトの名無しさん
垢版 |
2018/03/23(金) 14:56:17.17ID:OzS/hjRE
[Dはjava.lang.Double[]じゃなくてプリミティブ配列のdouble[]だよ
ScalaだとArray[Double]として変換なしでそのまま使える
まあわかりにくいよな…
893デフォルトの名無しさん
垢版 |
2018/03/23(金) 15:11:57.52ID:X8WMZJVU
val obj: Object = accessor.toArray(arg0, arg1, arg2)
val array = obj match {
case double: Array[Double] => double
case _ => throw new InternalError()
}
2018/03/23(金) 15:22:24.34ID:ZVKcVlB+
>>892
変身ありがとうございます。Object=Arrayとあるので
私も当初はそう思ったのですが、toListや配列を反転させるreverseすら通らないです。
error: value reverse is not a member of Object

下のサイトにあるような、object型配列ではないかと推測します。
https://ameblo.jp/gdgd-programmer/entry-12182237268.html
895デフォルトの名無しさん
垢版 |
2018/03/23(金) 15:34:46.78ID:OzS/hjRE
あ、キャストはいるから>>893みたいにしてね
てか問題箇所のコード片貼ってもらった方が早いかな…
2018/03/23(金) 15:35:13.84ID:ZVKcVlB+
>>893
返信ありがとうございます。
error: object java.lang.reflect.Array is not a value
とエラーが出るので、
今回の対象はjava.lang.reflect.Arrayに該当するのでしょうか。

調べてみます。
897デフォルトの名無しさん
垢版 |
2018/03/23(金) 16:12:35.67ID:X8WMZJVU
import java.lang.reflect.Array を消せ
898デフォルトの名無しさん
垢版 |
2018/03/23(金) 17:22:45.55ID:ZVKcVlB+
>>897=893
通りました!ObjectがArray[Double] に変わって
計算できるようになりました。

3日苦労したのが嘘のようです。
非常に助かります。ありがとうございました!
899デフォルトの名無しさん
垢版 |
2018/03/23(金) 18:44:17.30ID:GtydX90K
Javaにかぶせたのが間違いだったな
LLVMにしとけばよかったのに
2018/03/23(金) 23:28:23.53ID:ZVKcVlB+
scalaでforやwhileを使わずに、下記の計算をする方法、
あるいは行列用のライブラリってありますか?
1. ListやArrayの範囲指定(内容ではなく座標範囲)して抽出や計算
⇨位置指定して演算したい、画像や行列、ベクトルを想定
2. ListやArray同士の四則演算
⇨配列をベクトルや行列として取り扱いたい

pythonのnumpyやmatllab、Rのように、行列演算でscalaを使いたいと考えています。
何かお勧めがありましたらご教授いただけると嬉しいです。
2018/03/23(金) 23:35:35.86ID:ZVKcVlB+
調べると、ND4jやBreezeでしょうか。
後はSparkのデータフレームとか。
902デフォルトの名無しさん
垢版 |
2018/03/24(土) 01:51:11.89ID:+ZOif6f2
linear algebra libraryで調べて自分に合ったの探したら
903デフォルトの名無しさん
垢版 |
2018/03/24(土) 02:21:55.05ID:+ZOif6f2
>>899
scala-nativeというものがあってだな
904デフォルトの名無しさん
垢版 |
2018/03/24(土) 04:27:50.66ID:fp6qdPf8
Javaのインフラに乗っかれたのは大きかったと思うけどね
ファイルIOくらいScala側で用意して欲しいけど
905デフォルトの名無しさん
垢版 |
2018/03/24(土) 06:42:38.90ID:+ZOif6f2
ファイルIOはbetter-filesが来てから何も困らなくなったな
たしかにこういうのは標準であってほしかった
レス数が900を超えています。1000を超えると表示できなくなるよ。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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