协议

protocol Named {
    var name: String {get set}
}

struct FlowerNamed {
    var name: String
}

struct CityNamed {
    var name: String
}

struct StarNamed {
    var name: String
}

let rows: [Named] = [
    Flower(name: "Rose"),
    City(name: "Rome"),
    Star(name: "Sirius")]

let list = rows.map({$0.name}).joined(separator: ", ")
//list is Rose, Rome, Sirius

print("list is \(list)")