2017-07-30 4 views
1

の前にartist変数を代入することは可能ですか?Swift:switch case-let-whereの変数に代入

var artist 
switch fullline { 
case let path where path.hasPrefix("Monet"): 
    artist = "Monet" 
case let path where path.hasPrefix("Cezanne"): 
    artist = "Cezanne" 
default:() 
} 

閉鎖:

case let path where {() -> Bool in let artist = "Monet"; return path.hasPrefix(artist) }: 

エラー:

() -> Bool' is not convertible to 'Bool'

コンテキスト:私は自由形式テックスのラインを持っている

tを人の目に見える一貫したテキストを出力するためにマッサージする を必要とするプレフィックスとしてアーティスト名を使用します。例えば

Monet : Snow at Argenteuil 02, 1874 
Monet - Snow at Argenteuil, 1874, 3rd Floor Collections 
Monet, Claude - 1875, Snow in Argenteuil 
Cezzane - Vase of Flowers, 1880-81, print 
Cezzane, Paul 1900-1903 Vase of Flowers 
Cezzane - Vase with Flowers, 1895-1896 

各アーティストのため を分類/詳細な処理を実行するコードの断片があります。したがって、処理ロジックはアーティストに依存する。

私はあなたがブール値が期待されているクロージャを与えている

switch fullline 
hasPrefix(artist = "Monet") 
    -> code logic 1 
     get_birthday(artist) 

hasPrefix(artist = "Cezzane") 
    -> code logic 2 
     get_birthday(artist) 
+0

'fullline'の例ですか? –

+0

あなたはただ書くことができません:case let path.hasPrefix( "Monet")そしてwhere節を省略します –

+0

これは最初のケースとどう違うのですか? – adev

答えて