やりたいこと
配列を含む構造体配列と、別の配列を比較して一致したものがあるかないかを判定したいです。
下のようにデータが入っており receipts の値が menus の各 Price に含まれるかを高階関数で書いた場合どう書くかが知りたいです。
宣言部
struct Menu { public let name: String public let text: String public let price: [Price] } struct Price { public let size: String public let yen: Int } struct Receipt { public let yen: Int }
データはこんな感じで入っています
let menus:[Menu] = [Menu(name: "牛丼", text: "牛肉が乗ってます", price: [Price(size:"並盛", yen:380),Price(size:"大盛", yen:430),Price(size:"特盛", yen:560)]), Menu(name: "豚丼", text: "豚肉が乗ってます", price: [Price(size:"並盛", yen:390),Price(size:"大盛", yen:440),Price(size:"特盛", yen:570)]), Menu(name: "カルビ丼", text: "カルビが乗ってます", price: [Price(size:"並盛", yen:400),Price(size:"大盛", yen:450),Price(size:"特盛", yen:580)])] let receipts:[Receipt] = [Receipt(yen:320),Receipt(yen:590),Receipt(yen:620),Receipt(yen:400)]
ループ文で回した場合の処理
var result = false menus.forEach{ menu in menu.price.forEach{ price in receipts.forEach{ receipt in if( price.yen == receipt.yen ){ result = true } } } } return result
実行結果
///Receipt(yen:400)とカルビ丼の400が同じ値なのでtrue true
補足情報(FW/ツールのバージョンなど)
XCode10
Swift4
回答2件
あなたの回答
tips
プレビュー