X



プログラミング言語 Scala 11冊目 [転載禁止]©2ch.net
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん
垢版 |
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の連載記事、各々で開かれた勉強会の資料などがあります。
0802デフォルトの名無しさん
垢版 |
2017/06/17(土) 10:04:29.41ID:cX5L/y8y
純粋に関数型として売り出すのはScalaには正直厳しいんじゃないかな
実用プログラミングにおける関数型の最大の売りはモナド遊びでも公開関数でもなくその宣言性の高さ
所詮は手続き型ベースの構文で、バリバリ宣言的プログラミングするにはロジックの見通しが悪すぎるよ
0804デフォルトの名無しさん
垢版 |
2017/06/17(土) 10:22:41.31ID:cX5L/y8y
>>803
Scalaではそもそも関数型のメリットを広く訴求することが難しいということだよ
既存の関数型マニアだけでは実用的なエコシステムを構築するには全く開発リソースが足りない
宣言性の問題は言語の本質的な素性の問題だからライブラリや新しい機能を追加すればよいというものでもないし
0805デフォルトの名無しさん
垢版 |
2017/06/17(土) 13:43:21.05ID:nneUiibe
初めは宣言型で書いて次第に関数型へシフトしていけるのはScalaの強みじゃないかな
チームの習熟度に応じてプロダクトを発展させていけば
メンバーの技術力向上に繋がったりするよ

お金の余裕が無いとそうそうできないけど
関数型への理解は後の宣言型で組むコードにも役立つ知識だと思う
0806デフォルトの名無しさん
垢版 |
2017/06/18(日) 11:42:27.42ID:8hGvE46a
はてぶの特集見たか?
あそこにKotlinが載るようになったんだぞ?
一度でもScalaなんか載ったことあったか?

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

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

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

もうこのスレでやたらKotlin推してる人間は疑ってかかった方がいいね
0818デフォルトの名無しさん
垢版 |
2017/06/19(月) 05:54:06.80ID:Mr+u11Xq
こういうのが建設的な議論もせずに私怨で言語を貶して粘着し続けてるんだから2chは魔窟だわ
そりゃあ知識も逃げていくわけだよ
0821デフォルトの名無しさん
垢版 |
2017/07/09(日) 11:43:14.40ID:vvtk1U94
ぶっちゃけ、KotlinにはScalaみたいなスター性みたいのが感じられないんだよな
Scalaやってますって言われたらオオッってなるけど
Kotlinやってますって言われてもアッフーン程度じゃん
でもこれが初心者でもとっつきやすさに繋がっていいってことなのかな
わかるやつおらん?
0822デフォルトの名無しさん
垢版 |
2017/07/09(日) 21:04:52.08ID:Grj4ijvD
スター性って要するに習得難易度が高いって意味?
難易度に見合ったメリットとか独自性がないと簡素な言語に流れるのは当然だなあ
Scalaが爆発的な人気を得ることはないだろうなと思ってるが少数精鋭でいいとも思ってる
0824デフォルトの名無しさん
垢版 |
2017/07/09(日) 22:28:32.51ID:TMdhC0Rp
>>822
書いてる俺カッケー感だよ
KotlinはなんかJavaがすっきりした程度だけど
Scalaだとウオオってなるじゃん
0825デフォルトの名無しさん
垢版 |
2017/07/09(日) 22:31:36.60ID:TMdhC0Rp
>>823
早く追い越してくれ
動的型のゴミオモチャはPythonだけで十分だ
屁臭いペチプーも詐欺師ルビーも公害粗大ゴミのペェ〜ルも
全部要らん
書いてるやつほんとにマウスで殴り殺してやりたい
0830デフォルトの名無しさん
垢版 |
2017/07/29(土) 12:26:37.74ID:JFgIXVoU
アドホック多相という単語にウェッってなっちゃった僕はどうしたらいいですか?
0835デフォルトの名無しさん
垢版 |
2017/07/29(土) 15:03:19.22ID:JFgIXVoU
1ヶ月間衰えぬことを知らない中学生の勃起チンポのようなコトリンと
1ヶ月ぶりにレスがついたと思ったら死にかけの爺の老害レスばかりのスカラ


どうしてこうなった
0837デフォルトの名無しさん
垢版 |
2017/08/10(木) 01:39:13.07ID:BTkUJFH3
その煽りtwitterでやってれば
2chにScala使いなんてそもそも少ないんだから
0840デフォルトの名無しさん
垢版 |
2017/09/16(土) 07:17:30.81ID:AcW1bn43
>>839
大規模案件に使われてて需要があるのか?
0842デフォルトの名無しさん
垢版 |
2017/09/16(土) 14:54:25.78ID:ixWS+PsT
棒チャットのあれ、チャットのアレが日本語化して大変そうだな
せっかくゴミ屑のペチプァ捨ててScalaにしたのに
ペチプァのサゲマンっぷりはすごいな
0843デフォルトの名無しさん
垢版 |
2017/09/17(日) 04:33:22.59ID:5DAGa3Dm
大企業だから大規模案件を起こせて
社員の年収も高いって考えても
常識的におかしくないな
0846デフォルトの名無しさん
垢版 |
2017/09/25(月) 01:14:08.23ID:LHq9Z9Zz
それ半年以上前から言ってるよね
本当なのかな

てかもはや
早くするのが遅すぎたね
Kotlin・・・
0850デフォルトの名無しさん
垢版 |
2017/09/26(火) 09:17:58.86ID:SmezMtDi
現実を見てない空盛り上がり
そんなこと言ったらペェチプァだった盛り上がってますわ
0851850
垢版 |
2017/09/26(火) 11:19:35.74ID:yOG1OpGO
すまん。仕事でイライラして難癖つけるだけのレスしちまった。
無視してくれ。
0853デフォルトの名無しさん
垢版 |
2017/09/26(火) 17:40:52.02ID:O7/Ue20b
Javaはうんざりしてるので違うことやりたいと思う人にKotlinより
Scalaの方が良い点はなんだろう。
自分はScalaからKotlinに引越中だけど…。
0857デフォルトの名無しさん
垢版 |
2017/09/29(金) 00:36:14.89ID:dKsSARYE
ちょっと基本的な質問。

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

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

コンテナの中身も変更不可にするためには、変更不可コンテナを使わないとだめ
0860デフォルトの名無しさん
垢版 |
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)
動くは動くんですが、もっと関数型っぽい書き方があるのではないかと思いまして。
0861デフォルトの名無しさん
垢版 |
2017/09/29(金) 06:45:47.52ID:t98OlUL1
Paizaの問題を具体例出して答えるのはまずい気がする
パターンマッチングで調べるといいよ
0864デフォルトの名無しさん
垢版 |
2017/10/23(月) 19:51:29.08ID:1HzbJqCQ
数年前まで盛り上がってたのにね
なんでだろうね
0865デフォルトの名無しさん
垢版 |
2017/10/23(月) 20:52:53.20ID:Y0tE+5bm
Kotlinに負けGoに負けRustに負け、勝ってたはずのJavaにすら負け

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

後に残るはPHP並の負債のみ
悲しいなぁ
0867デフォルトの名無しさん
垢版 |
2017/10/23(月) 23:09:59.66ID:Y0tE+5bm
PHPという糞の山にScalaとかいう糞を混ぜ込んだ究極糞大山のSlackのパ●リはどうなりましたか?(凍え)
0871デフォルトの名無しさん
垢版 |
2017/10/26(木) 00:33:02.66ID:zsf3GtyN
ドッティはドコッティ?

これは流行る
糞ペチプァにすら負けたドッティはドコッティ?
0878デフォルトの名無しさん
垢版 |
2017/11/14(火) 13:36:02.87ID:yxhOAHxu
スッカラカン
0881デフォルトの名無しさん
垢版 |
2018/03/22(木) 03:49:55.89ID:IlQ6IwQY
別にオワコンじゃないと思うが
0882デフォルトの名無しさん
垢版 |
2018/03/22(木) 10:16:53.80ID:Q2/ylW7b
人生楽ありゃ苦もあるさ
後から来たのに追い越され
0883デフォルトの名無しさん
垢版 |
2018/03/23(金) 03:24:14.01ID:ZVKcVlB+
JavaのObject ArrayをscalaのArrayに変換する方法を教えてください。
Arrayには数値が入っていますが、Object型だとscalaでの計算に使用できず困っています。

Javaとの相互運用は色々と癖がありますね……。
0884デフォルトの名無しさん
垢版 |
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)
0885デフォルトの名無しさん
垢版 |
2018/03/23(金) 11:58:31.85ID:ZVKcVlB+
>>884
返信
0886デフォルトの名無しさん
垢版 |
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#から比べると難易度高いです。
0887デフォルトの名無しさん
垢版 |
2018/03/23(金) 13:26:03.77ID:U3ze5amU
最後の2行みたいな事は火種にしかならないのに
どうして書いちゃうんだろうねえ
0888886
垢版 |
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と出るので
死にたくなってきました……。
0889デフォルトの名無しさん
垢版 |
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)
0890デフォルトの名無しさん
垢版 |
2018/03/23(金) 14:29:48.12ID:X8WMZJVU
ひょっとしてこう書けば解決する話なんじゃないの
javaArray.map(Double.unbox)

それと『計算に使用できず困ってる』ってアバウトすぎてよくわからないよ
0892デフォルトの名無しさん
垢版 |
2018/03/23(金) 14:56:17.17ID:OzS/hjRE
[Dはjava.lang.Double[]じゃなくてプリミティブ配列のdouble[]だよ
ScalaだとArray[Double]として変換なしでそのまま使える
まあわかりにくいよな…
0893デフォルトの名無しさん
垢版 |
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()
}
0895デフォルトの名無しさん
垢版 |
2018/03/23(金) 15:34:46.78ID:OzS/hjRE
あ、キャストはいるから>>893みたいにしてね
てか問題箇所のコード片貼ってもらった方が早いかな…
0896デフォルトの名無しさん
垢版 |
2018/03/23(金) 15:35:13.84ID:ZVKcVlB+
>>893
返信ありがとうございます。
error: object java.lang.reflect.Array is not a value
とエラーが出るので、
今回の対象はjava.lang.reflect.Arrayに該当するのでしょうか。

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

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

pythonのnumpyやmatllab、Rのように、行列演算でscalaを使いたいと考えています。
何かお勧めがありましたらご教授いただけると嬉しいです。
レス数が900を超えています。1000を超えると表示できなくなるよ。

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