プログラミング言語 Scala 7冊目
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん
2011/09/04(日) 20:07:34.70ttp://www.scala-lang.org/
■リンク集
ttp://sites.google.com/site/scalatohoku/%E5%8B%89%E5%BC%B7%E4%BC%9A%E8%B3%87%E6%96%99
■前スレ
プログラミング言語 Scala 6冊目
ttp://hibari.2ch.net/test/read.cgi/tech/1307416864/
■Scalaの紹介文(さわり)
Scalaは簡潔かつ優雅で型安全な方法でよくあるプログラミングパターンを表現できるように
設計された汎用プログラミング言語です。
Scalaはオブジェクト指向と関数型言語の特徴をスムーズに統合しておりJavaやその他の言語を扱う
プログラマをより生産的にすることができます。(以下略)
ttp://www.scala-lang.org/node/25
■Scalaに関する書籍(英語)
ttp://www.scala-lang.org/node/959
リファレンスマニュアルや草稿のPDFなども充実しているのでそちらも参照してください。
日本語の資料には、チュートリアルの訳やIBM dW、IT Proの連載記事、各々で開かれた勉強会の資料などがあります。
0809デフォルトの名無しさん
2012/01/22(日) 17:23:25.32Thanks! 完璧に求めている答えでした。
でも、ということは、list = x :: list というのは略記できないってことなんだね・・・
0810デフォルトの名無しさん
2012/01/22(日) 17:34:17.10list = x :: list は
list = list.::(x) って意味なので
list ::= x と書ける
けど正直分かりにくいと思う
0811デフォルトの名無しさん
2012/01/23(月) 23:23:20.50overloaded method value printf with alternatives: ・・・
とか言われて、使えん。なぜ?
format()とか付ければ回避できるけど、タイプ数がもったいない。
0812デフォルトの名無しさん
2012/01/24(火) 01:21:53.52引数に渡してるものの型が定義に合ってない
def printf(String, Object*): PrintStream
def printf(java.util.Locale, String, Object*): PrintStream
Object(AnyRef)の可変長引数だからIntとかはそのまま渡せないね
0813デフォルトの名無しさん
2012/01/24(火) 02:46:24.22なんてこった!Predef.printfはAny*だったから動いてたのか!
可変引数にはautoboxingかからないんだな。
またひとつ賢くなっちまったぜ。
さんきゆーふれんず
0814デフォルトの名無しさん
2012/01/28(土) 20:27:00.750815デフォルトの名無しさん
2012/01/28(土) 20:32:18.25これってリスナーのメールボックスにメッセージを送るだけで、処理が終わるのを待たずに次の行のcount += 1が実行されるという認識で大丈夫ですか?
case class Add(who:Actor)
case class Changed(what:AFoo, count:Int)
case object Access
class AFoo extends Actor {
private var listeners:List[Actor] = Nil
private var count = 0
def act = loop {
react {
case Add(who) => listeners = who :: listeners
case Access => access()
}
}
private def access() = {
notifyListeners
count += 1
}
private def notifyListeners() = {
listeners.foreach( a => a ! Changed(this, count))
}
}
0816デフォルトの名無しさん
2012/01/28(土) 20:35:05.97ソースの続き
class AFooListener(afoo:AFoo) extends Actor {
afoo ! Add(this)
def act = loop {
react {
case Changed(f, cnt) => changed(f, cnt)
}
}
def changed(eventFrom:AFoo, count:Int) :Unit = {
if (count < 10) eventFrom ! Access
}
}
0817デフォルトの名無しさん
2012/01/28(土) 21:14:17.520818815
2012/01/28(土) 21:54:53.55俺が答えるのもあれだけど、ラッパーメソッド?的なモノを用意すればいいんじゃない?
// コイツをJavaから実行
def sendFromJava(s:String) = {
actor ! s
}
0819デフォルトの名無しさん
2012/02/05(日) 00:58:20.470820デフォルトの名無しさん
2012/02/05(日) 07:16:14.63クロージャって yield の代替になるの?
0821デフォルトの名無しさん
2012/02/05(日) 10:08:09.190822デフォルトの名無しさん
2012/02/05(日) 16:34:11.09(1 to 10).map(i => "a" + i -> i.toString)
for(i <- 1 to 10) yield i => "a" + i -> i.toString
yieldを使わなければ出来なくて、有効なケースってどういうのがあるの?
0823デフォルトの名無しさん
2012/02/05(日) 19:07:20.12そりゃ、yield じゃなくて for 式が map に置き換えられるって話でしょう。
言語仕様で for 式は他のメソッドに置き換えられて実行されると決まってるのだから、
当然 yield 無しに書けないコードは無い。ただ、そっちのが読み書きしやすいってだけの話。
0824デフォルトの名無しさん
2012/02/05(日) 22:58:17.67今のScala-IDE(eclipseのプラグイン)と組み合わせてちゃんと動く気がしない。
0825デフォルトの名無しさん
2012/02/06(月) 04:11:39.24sbtのほうは1.7ぐらいの時に動かしてみたけどeclipseは当時ひどくて試してないなー。いま簡単に動くなら試してみたいけどつらそうだね。
0826デフォルトの名無しさん
2012/02/07(火) 01:51:04.64sbt 固有のログがコンソールに出てきて鬱陶しいから次のような感じにしてんだけど、
"[info] Set current project to ..." ってのが最初に出てくる。どうしたらいいの?
#!/usr/bin/env scalas
!#
/***
scalaVersion := "2.9.1"
logLevel := Level.Error
*/
println("hoge")
0827デフォルトの名無しさん
2012/02/11(土) 01:30:56.29http://www.atmarkit.co.jp/fjava/index/index_scala.html
0828デフォルトの名無しさん
2012/02/13(月) 01:12:02.310829デフォルトの名無しさん
2012/02/13(月) 06:08:17.750830デフォルトの名無しさん
2012/02/13(月) 14:53:13.25Play2.0でまた活発になるといいね
0831デフォルトの名無しさん
2012/02/13(月) 20:42:31.94いま、ブレーク前夜に特有の静けさ。
0832デフォルトの名無しさん
2012/02/13(月) 21:15:39.790833デフォルトの名無しさん
2012/02/13(月) 21:21:42.13単に言語のネタとして話すことがなくなってきたというだけでは
0834デフォルトの名無しさん
2012/02/13(月) 21:38:57.93試すのも面倒臭いんだよねw
0835デフォルトの名無しさん
2012/02/14(火) 07:08:53.980836デフォルトの名無しさん
2012/02/15(水) 07:07:56.190837デフォルトの名無しさん
2012/02/15(水) 21:49:40.180838デフォルトの名無しさん
2012/02/15(水) 22:35:47.31iptablesも起動してないのに誰がパケットを遮断してるのか…
分散プログラミングはwindowsの方が楽だな〜
単に自分がlinuxに無知なだけだけど
0839デフォルトの名無しさん
2012/02/16(木) 00:14:15.560840デフォルトの名無しさん
2012/02/16(木) 01:28:18.85助言サンクス
838のあと、自前でポートスキャナを書いてチェックしてみたんだけど
同ホスト内でスキャンするとアクターの受信待ちポートがみつかるのに
リモートからのスキャンだと見えなかった。
きっとlinuxユーザなら常識的な何かを見落としてるんだと思う。
0841デフォルトの名無しさん
2012/02/16(木) 02:06:58.010842デフォルトの名無しさん
2012/02/16(木) 06:06:33.350843デフォルトの名無しさん
2012/02/16(木) 07:28:51.600844デフォルトの名無しさん
2012/02/16(木) 22:59:25.85ありがとう。おかげで解決した。
nc -l xxxx 50000で待つ場合と
akkaのアクターで同じポートで待つ場合をnetstatで比較したら、
前者はlocal addressが*:50000、後者はxxxx:50000
になっていた。
どうもakkaではホスト名で登録するとxxxxになるので
IPアドレスを直接指定しないと駄目みたい。
0845デフォルトの名無しさん
2012/02/16(木) 23:29:40.950846デフォルトの名無しさん
2012/02/18(土) 07:51:45.20Javaで以下のようなBuilderパターンの実装があります。
Builderオブジェクトはサイズが大きいので
Builder.Resultオブジェクトを利用するときには解放したいのです。
|class Builder {
| static class Result {...}
| Result build() {...}
|}
それをScalaで実現するにはどうすればいいでしょうか?
(結果の型はBuilder.Resultにしたいという制約があります)
以下のようにすると、Builder.Resultオブジェクトが
Builderへの参照を持ってしまいます。
|class Builder {
| class Result {...}
| def build(): Result = {...}
|}
以下のようにすると、Builderへの参照は持ちませんが、
せっかく関数型言語にしたのに冗長ですし、
関連のあるコードが遠くに離れてしまい、保守性を低下させます。
|class Builder {
| def build(): Result = {...}
|}
|object Builder {
| class Result {...}
|}
0847デフォルトの名無しさん
2012/02/18(土) 14:29:55.90class Result {...}
class Builder {
def build(): Result = {...}
}
}
0848デフォルトの名無しさん
2012/02/19(日) 21:16:55.37- Resultってクラス名が本質的な意味を持っているとは思えない
- Builderと言っている機能はコンパニオンオブジェクトで実現可能
0849デフォルトの名無しさん
2012/02/19(日) 21:31:04.34type A = x.y.C
みたいな感じで,クラスの別名を定義できますが,
x.y.CのstaticメンバをA.fと参照することはできないようです。
importせずになんとか別名経由で参照する方法はないでしょうか?
0850デフォルトの名無しさん
2012/02/20(月) 07:56:55.86可視性が通ってないんじゃないの。
0851デフォルトの名無しさん
2012/02/20(月) 12:18:11.84http://www.infoq.com/jp/news/2012/02/twitter-effective-scala
0852デフォルトの名無しさん
2012/02/20(月) 21:02:04.89stackoverflowに同じ質問があったんですがうまく設定できない…
0853デフォルトの名無しさん
2012/02/22(水) 21:40:06.57Product数字.scalaとか
Tuple数字.scalaとか
何でこんな名前なの?
0854デフォルトの名無しさん
2012/02/22(水) 21:57:18.030855853
2012/02/23(木) 20:04:55.98マトモに中身見ずに聞いてました、ありがとう
0856デフォルトの名無しさん
2012/02/24(金) 01:39:58.18実行しても待たされた挙句に何も出力しないで帰って来る。
なんでじゃああああああw
0857デフォルトの名無しさん
2012/02/24(金) 07:41:21.760858デフォルトの名無しさん
2012/02/24(金) 09:39:32.13remoteでないのなら単純な理由だろうな〜
start()叩いてないとか?
0859856
2012/02/24(金) 12:03:39.32打ち間違いは今のところ見当たらず。
-cpのパスを故意に別のパスにするとShapeDrawingActorがMissing dependencyだって文句言ってくるから
scalacしたクラスファイルは読み込んでると思う。
ノワワーン
>>858
「remoteでないのなら」ってのはどういうことですか?
0860856
2012/02/24(金) 12:15:47.72こりゃ環境の問題でしょうね(Fedora16上でやってます)。
0861デフォルトの名無しさん
2012/02/24(金) 12:41:38.80動物本を読んだ事が分からないんだけど、それってリモートアクター?
そうならば通信がどっかて止まっているのかも。
0862デフォルトの名無しさん
2012/02/24(金) 21:59:24.900863デフォルトの名無しさん
2012/02/25(土) 15:14:47.46何故引数一つ一つに付けられないようにされているのでしょうか?
0864デフォルトの名無しさん
2012/02/25(土) 15:27:37.710865856
2012/02/25(土) 20:00:25.88これは私の話のことですか?
気になったので一応/etc/selinux/configでSELINUX=disabledをセットして試してみましたが、変わりませんでした。
0866デフォルトの名無しさん
2012/02/25(土) 20:15:03.13そもそもリモートアクターなの?
0867デフォルトの名無しさん
2012/02/26(日) 01:41:53.76http://www.infoq.com/jp/news/2012/02/scala-ide
0868デフォルトの名無しさん
2012/03/01(木) 21:47:44.670869デフォルトの名無しさん
2012/03/01(木) 22:54:36.770870デフォルトの名無しさん
2012/03/02(金) 05:57:39.070871デフォルトの名無しさん
2012/03/02(金) 09:16:36.330872デフォルトの名無しさん
2012/03/02(金) 10:15:32.230873デフォルトの名無しさん
2012/03/02(金) 10:30:09.10https://play.lighthouseapp.com/projects/82401/milestones/122723-20
https://play.lighthouseapp.com/projects/82401-play-20/overview
1系から2系に足りないやつ持ってきて追加してるフェーズ?
0874デフォルトの名無しさん
2012/03/05(月) 22:02:23.850875デフォルトの名無しさん
2012/03/05(月) 22:29:49.800876顕正新聞 平成24年2月5日号「原発全廃特集号」
2012/03/06(火) 09:43:52.73・原発は日本を滅ぼす、即時全廃せよ
・六ヶ所村再処理工場直下に二つの活断層
・耐震基準450ガルと、著しく耐震性に欠ける施設
・大事故が起きたらチェルノブイリを遥かに越す未曽有の大惨事が
・代替は天然ガス・コンバインドサイクルで十分
http://d.hatena.ne.jp/kensho01/20120208/1328718592
0877デフォルトの名無しさん
2012/03/07(水) 00:38:57.12単に主要人物が2chから離れているだけ?
東京とか名古屋とか仙台とかのScala勉強会は盛況?
0878デフォルトの名無しさん
2012/03/07(水) 04:53:01.94言語仕様的には2.9って2.8とほとんど変わってないから、ずっと2.8時代が続いているようなもんなんだよな
2009年のBetaで盛り上がってるころからずっと同じ言語を見てると思うとさすがに言語ウォッチャー的には飽きてくる
0879デフォルトの名無しさん
2012/03/07(水) 08:43:19.700880デフォルトの名無しさん
2012/03/07(水) 11:58:41.320881デフォルトの名無しさん
2012/03/07(水) 12:08:53.070882デフォルトの名無しさん
2012/03/08(木) 12:24:36.670883デフォルトの名無しさん
2012/03/09(金) 21:06:57.12コンストラクタが持てるかどうかだけですか?
0884デフォルトの名無しさん
2012/03/09(金) 23:13:32.840885デフォルトの名無しさん
2012/03/12(月) 06:19:24.030886デフォルトの名無しさん
2012/03/14(水) 07:18:37.89軽くググッたらXMLリテラル使うといいかもっていうふざけた答えがみつかりましたw
標準ライブラリにはないとしても、例えばJavaでいうところのStringUtilsくらいの
メジャーなライブラリで用意されてたりしないんですか?
Javaしか使ったことないんだけど、LL言語で唯一憧れるのが#{foo}みたいな記法
これないと不便ですよね
0887デフォルトの名無しさん
2012/03/14(水) 07:30:34.15文字列リテラル自体がそういう記法に対応してないのかなと思いまして
あ、これだとライブラリにないでしょうかっていう質問がおかしいか…
0888デフォルトの名無しさん
2012/03/14(水) 07:44:15.49"Lv.%d%n攻撃力 %,3d%n防御力 %,3d%n生命力 %,3d".format(lv, atk, deff, hp)
0889デフォルトの名無しさん
2012/03/14(水) 07:58:13.590890デフォルトの名無しさん
2012/03/14(水) 09:06:17.02- $を使ったインデックス参照形式での埋め込み
"SELECT name FROM tbl WHERE id > %1$s AND name LIKE %2$s".format(10, "Tom")
今の所これで事足りてるかな
0891デフォルトの名無しさん
2012/03/14(水) 11:57:41.230892デフォルトの名無しさん
2012/03/14(水) 14:59:55.67RC信用出来たじゃないですかー!やったー!
0893デフォルトの名無しさん
2012/03/14(水) 21:14:04.03誰も使う人なんていないのに
0894デフォルトの名無しさん
2012/03/14(水) 23:29:52.840895デフォルトの名無しさん
2012/03/15(木) 00:03:37.430896デフォルトの名無しさん
2012/03/15(木) 00:26:04.580897デフォルトの名無しさん
2012/03/15(木) 00:30:33.560898デフォルトの名無しさん
2012/03/15(木) 01:16:51.850899デフォルトの名無しさん
2012/03/15(木) 16:15:17.000900デフォルトの名無しさん
2012/03/15(木) 17:54:04.010901デフォルトの名無しさん
2012/03/16(金) 00:18:32.900902デフォルトの名無しさん
2012/03/16(金) 01:27:50.21使える人、使いたい人も徐々に増えてきた。
0903デフォルトの名無しさん
2012/03/16(金) 13:31:41.26HaskellのDimensionalのような
0904デフォルトの名無しさん
2012/03/17(土) 21:32:26.03http://www.ibm.com/developerworks/jp/linux/library/l-sparkdataanalysis/
0905デフォルトの名無しさん
2012/03/18(日) 11:27:32.86F# 単位
http://code.google.com/p/lascala/source/browse/trunk/scala/data/Measure.scala
Scalaだと、こんなのはあった。
0906デフォルトの名無しさん
2012/03/19(月) 17:47:32.17http://d.hatena.ne.jp/papamitra/20120318/Iteratee
papamitraさんありがとう!
0907デフォルトの名無しさん
2012/03/19(月) 23:11:22.07http://www.scala-lang.org/node/12565
プロジェクト案発表したみたい
0908デフォルトの名無しさん
2012/03/20(火) 02:59:57.64レス数が900を超えています。1000を超えると表示できなくなるよ。