2017-12-28 19 views
1

私はScalaで新しく、yamlファイルから取得しなければならない許可PhoneNumbersのリストを持っています。私はそのようにYAMLファイルから許可された電話番号のリストを取ることができコンフィグ形質を持っているスカラ - 文字列の配列をSetに設定する[PhoneNumbers]

allowedPhoneNumbers: 
    - 101111111001 
    - 101111111002 
    - 101111111003 

:私はそのような私の設定ファイルの下でそれを持っている

val allowedPN1= config.getStringList("allowedPhoneNumbers").toArray 

または

def allowedPN2: util.List[String] = config.getStringList("allowedPhoneNumbers") 

Set [PhoneNumbers]を返す関数があります。 私はいくつかの

config.allowedPN1.toSet[PhoneNumbers] 

を返すようにしようとしている場合、それは罰金コンパイルが、私は、私はそう

type arguments [PhoneNumbers] do not conform to method toSet's type parameter bounds [B >: Object] 

を取得し、プロジェクトをビルドしていたときに、どのように私は私のリストに変換することができます(設定から撮影ファイル)をいくつかのSet [PhoneNumbers]に追加します。 PhoneNumbersは、必要なパターンマッチを持つ単なるクラスです。

case class PhoneNumbers(value: String) { 
    require(Pattern.matches("\\d{12}", value), 
    "The number must be a 12 digit phone number.") 
    override def toString: String = value 
} 
+0

あなた 'PhoneNumber'クラスとは何ですか? ? –

+0

必要なパターンのクラス。私は最初の質問に入れました。 – WDrgn

答えて

1

一つのオプションの電話番号にあなたの文字列を変換するために、最初のマップ操作をpeformすることです:

簡単な例を実行
val mySet = config.getStringList("allowedPhoneNumbers") 
    .toList 
    .map(PhoneNumbers(_)) 
    .toSet 

scala> val lista = List("546452222222", "666666666666") 
lista: List[String] = List(546452222222, 666666666666) 

scala> lista.map(PhoneNumbers(_)).toSet 
res4: scala.collection.immutable.Set[PhoneNumbers] = Set(PhoneNumbers(546452222222), PhoneNumbers(666666666666)) 
+0

私の設定ファイルから読み込むgetStringListがJavaベースであり、リストを返すので、Java util.List [String]からマップを作成する際に問題が発生しました WDrgn

+0

私は同じメソッドを1つのプロジェクトに持っています。 getStringListメソッドの直後: config.getStringList( "fields")。toList 私はその回答を – SCouto

+0

に更新していただきありがとうございます。 – WDrgn

関連する問題