我正在使用字符串过滤功能,如:
||
过滤某些字词。但我收到编译错误说 - 值String
不是app.config.update(
DEBUG=True,
#EMAIL SETTINGS
MAIL_SERVER='smtp.gmail.com',
MAIL_PORT=465,
MAIL_USE_SSL=True,
MAIL_USE_TLS= False,
MAIL_USERNAME = 'myemail@gmail.com',
MAIL_PASSWORD = 'mypass'
)
mail = Mail(app)
@app.route('/api/account', methods= ['POST'])
def login():
e= request.json ['email']
u= request.json ['user']
p= request.json ['pass']
msg= Message("Your password", sender= 'myemail@gmail.com',recipients = ['destinationemail'])
msg.body= 'Your password is ' + hashedp
#msg.html ='<b> password </b>'
mail.send(msg)
return 'Your new password has been sent through email'
的成员。谁能告诉我哪里出错了?
答案 0 :(得分:7)
contains
上的方法String
以String
为参数:
"foo".contains("foo") //True
因此,编译器试图将"I" || "sam"
解释为String
,因为这是contains
的参数。在Scala中,此语句等同于"I".||("sam")
(在||
上调用"I"
方法)。由于||
上没有方法String
,因此无法编译。
你的意思是!(word.contains("I") || word.contains("sam"))
。这是有道理的,因为我们现在在||
上Boolean
上调用word.contains("I")
,而||
是Boolean
上的方法(如文档{ {3}})。所以你的整个陈述可能是:
strings.filter(word => !(word.contains("I") || word.contains("sam"))
这相当于:
strings.filter(word => !word.contains("I") && !word.contains("sam"))
如果你最终要过滤很多短语,你也可以翻转它:
val segments = Set("I", "sam")
strings.filter(word => segments.forall(segment => !word.contains(segment)))
//Equivalent
strings.filter(word => !segments.exists(word.contains))