Javaなどで定数のみのクラスやインターフェースを作成したりしますが、scalaでも可能でしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
###定数のみのクラス
object(シングルトンオブジェクト)が用途に向いていると思います。
scala
1object Test { 2 val value = "value!" 3} 4 5object Main { 6 def main(args:Array[String]) = { 7 println(Test.value) 8 } 9} 10 11//value!
###インターフェース
interfaceそのものは無いですが、traitで関数宣言だけして
実装を省くとinterfaceのような振る舞いになるようです。
scala
1trait TTrait { 2 def put:String 3} 4 5class Test extends TTrait { 6 def put:String = {"trait!"} 7} 8 9object Main { 10 def main(args:Array[String]) = { 11 val t = new Test 12 def requireTTrait(t:TTrait) = {t.put} 13 println(requireTTrait(t)) 14 } 15} 16 17//trait!
投稿2016/05/12 22:41
総合スコア1221
0
ベストアンサー
"package object"と呼ばれるものもあります。
Scala
1package com 2 3package object example { 4 5 val msgSpring :String = "春は暖かいですね。" 6 val msgMoring :String = "おはようございます。" 7 def msgHello(name:String) = s" $name さん、こんにちは!" 8}
同じパッケージ内であれば、こんな感じで呼ぶことができます。
Scala
1println(msgMoring) 2>おはようございます。 3 4println(msgHello("Sam")) 5> Sam さん、こんにちは!
元々Scala は、"val"宣言で定数扱いとなります。
参考にしたURLを張り付けておきます。
http://www.atmarkit.co.jp/ait/articles/1205/22/news134_2.html
https://github.com/spray/spray/blob/master/spray-util/src/main/scala/spray/util/package.scala
また、少し質問と異なりますが、いわゆる列挙型はこんな感じで表現されます。
Scala
1package com.example 2 3sealed trait MitsubishiEnum 4 5case object eKwagon extends MitsubishiEnum 6case object Days extends MitsubishiEnum 7
こんな感じで使えます。
Scala
1 2val myCar:MitsubishiEnum = eKwagon 3 4val jpName = myCar match { 5 case `eKwagon` => "eKワゴン" 6 case `Days` => "デイズ" 7 } 8 9println(jpName) 10>eKワゴン
http://dev.classmethod.jp/server-side/scala-algebra-data-type/
投稿2016/05/13 14:31
総合スコア37
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/05/23 07:34