Consider the code below. Identify all statements that are true about the code. Select all that apply.
protocol MessageSecurity {
func encrypt(message: String) -> String
func decrypt(message: String) -> String
}
struct SecureIsh : MessageSecurity {
func encrypt(message: String) -> String {
let split = message.components(separatedBy: " ")
let ished = split.map({ $0 + "ish"})
return ished.joined(separator: " ")
}
func decrypt(message: String) -> String {
let split = message.components(separatedBy: " ")
let notIshed = split.map({ $0.dropLast(3)})
return notIshed.joined(separator: " ")
}
}
struct SecureMessenger {
var security: MessageSecurity
mutating func assignSecurity(security: MessageSecurity) {
self.security = security
}
func send(message: String, to: String) {
// code for sending a message
}
func read(message: String, from: String) {
// code for reading message
}
}
Group of answer choices
You can pass any object that implements the SecureMessenger struct to SecureMessenger's assignSecurity function
You can pass any object that implements the MessageSecurity protocol to SecureMessenger's assignSecurity function
You can pass a SecureIsh object to SecureMessenger's assignSecurity function
The code is invalid because you cannot use a protocol as a parameter to a function/member function