Scala では変数定義には必ず、頭に var もしくは val をつける必要がある。
省略した場合には以下のようなエラーが出る。ここらへん色々突っ込みもらった。ありがとう。 var だの val だのを書くのになれてないと、not found: value をよく見かける。
scala> hoge = 1
<console>:10: error: not found: value hoge
ソフトウェア技術者としてhttp://anond.hatelabo.jp/20130528173442 に反論してみる
ソフトウェア技術者で、もしExcel方眼紙を恥だという意識が無い人は技術者としては、センス悪いと思う。それを踏まえた上で「必要悪」として運用する人はまぁ仕方ないと思う。
$ cd /usr/local | |
$ tar zxvf scala-2.10.2.tgz | |
$ ln -s scala-2.10.2 scala |
http://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/xssf/eventusermodel/examples/FromHowTo.java を参考に Scala に移植をしてみたら…
[info] Updating {file:/home/vagrant/test-excel/}test-excel...
[info] Done updating.
[info] Compiling 5 Scala sources and 1 Java source to /home/vagrant/test-excel/target/scala-2.10/classes...
[warn] Class org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPhoneticRun not found - continuing with a stub.
[error] error while loading CTRst, class file '/usr/local/play-2.1.1/repository/cache/org.apache.poi/poi-ooxml-schemas/jars/poi-ooxml-schemas-3.9.jar(org/openxmlformats/schemas/spreadsheetml/x2006/main/CTRst.class)' is broken
[error] (class java.lang.NullPointerException/)
[warn] one warning found
例えば /([^:]+):[\s]+(.+)/ の正規表現の () の中の文字列二つを引っ張ってきて何かする場合、Ruby なら
if /([^:]+):[\s]+(.+)/ =~ line
puts $1
puts $2
end
みたいな書き方をするというか、LLなスクリプト言語だとこういう手軽な書き方がある。Scala ではどういう風に書けばいいのか
package controllers | |
import play.api._ | |
import play.api.mvc._ | |
object Application extends Controller { | |
def index = Action { | |
SimpleResult( | |
header = ResponseHeader(200, Map(CONTENT_TYPE -> "image/jpeg")), |
resolvers += "ClouderaRepo" at "https://repository.cloudera.com/content/repositories/releases" | |
resolvers += "ClouderaArtistctory" at "https://repository.cloudera.com/artifactory/cloudera-repos/" | |
libraryDependencies ++= Seq( | |
"org.apache.hadoop" % "hadoop-core" % "0.20.2-cdh3u6" | |
) |
package main | |
/* | |
#cgo CFLAGS: -I../mruby/include | |
#cgo LDFLAGS: -L../mruby/build/host/lib -lmruby -lm | |
#include <mruby.h> | |
#include <mruby/compile.h> | |
*/ |