我有这个烦人的警告,但我无法摆脱它。
假设我有一个向蓝牙设备发送命令的承诺,要做一个过程,我需要同步发送这些命令。
因此,在PromiseKit 6中可以执行的操作是创建一个for循环,然后使用then将每个命令附加到上一个promise。这种方法的问题在于,编译器会触发有关Result of call to 'then(on:flags:_:)' is unused
的警告,就像缺少catch
一样。我知道我可以使用cauterize()
,但是在这种情况下,我猜我将丢失执行每个诺言时抛出的错误。 when
不可行,因为它将在我需要同步时同时执行。
这里是一个与字符串一起使用的小样本,在我的实际应用中,它们不是字符串。
static func promise_startProcedure(with commands: [String]) -> Promise<Void> {
let promise = Promise()
for command in commands {
promise.then { //<-- WARNING SHOW HERE
Promise.value(command)
}
}
return promise
}
是否有摆脱此警告的方法?
[更新]
我犯了一个错误,答案不正确,是为我指明了正确的方向。
static func promise_startProcedure(with commands: [String]) -> Promise<Void> {
var promise = Promise()
for command in commands {
promise = promise.then {
Promise.value(command)
}
}
return promise
}
答案 0 :(得分:1)
您可以将@discardableResult
添加到方法的声明中。 From the docs:
例如,函数声明上的disableableResult属性 指示尽管函数返回值,但编译器 如果未使用返回值,则不应生成警告。
答案 1 :(得分:1)
尝试一下。我只是添加了import tkinter as tk
from PIL import Image, ImageTk
import tkinter.font as tkfont
best_batsmen = "James Bond"
message = "The best Batsman of the Tournament could possibly be: "
canvas_width = 500
canvas_height = 500
root = tk.Tk()
canvas = tk.Canvas(root, width=canvas_width, height=canvas_height)
canvas.pack()
frame = tk.Frame(root)
canvas.create_window(1, 0, window=frame, anchor='nw')
tk.Label(frame, text=message).pack(side='left')
tk.Label(frame, text=best_batsmen, font='bold').pack(side='left')
img = ImageTk.PhotoImage(Image.open("virat.jpeg"))
canvas.create_image(0, 20, anchor='nw', image=img)
#canvas.image = img
root.mainloop()
来禁止显示警告,但没有得到该警告。
Frame