是否存在Swift语言中LINQ Select()方法的一些替代方法?
例如,在c#中我可以执行以下操作:
var ranks = cards.Select(a=> a.Rank).ToArray();
Run Code Online (Sandbox Code Playgroud)
但我如何使用Swift语言做同样的事情?
Discards 功能是否可以正确地与 IDisposable 对象一起使用?
它Dispose();
在需要时调用吗?
我有一个代码:
Boolean existing = Mutex.TryOpenExisting(name: key, rights: MutexRights.ReadPermissions, result: out Mutex _);
Run Code Online (Sandbox Code Playgroud)
这里我只需要existing
变量值。
如您所见,我试图在这里使用“丢弃”变量,但我不确定在这种情况下是否正确使用。
因为 Mutex obj 实现了 IDisposable。
那么在这种情况下哪种方式是正确的?这个:
Boolean existing = Mutex.TryOpenExisting(name: key, rights: MutexRights.ReadPermissions, result: out Mutex _);
Run Code Online (Sandbox Code Playgroud)
或这个:
Mutex mutex;
Boolean existing = Mutex.TryOpenExisting(name: key, rights: MutexRights.ReadPermissions, result: mutex);
mutex.Dispose();
Run Code Online (Sandbox Code Playgroud) 例如,可以使用自动计算生成"活动"全局变量(属性)"区域":
public int Width = 5;
public int Length = 10;
public int Area
{
get{ return Width * Length;}
}
Run Code Online (Sandbox Code Playgroud)
但是......是否有可能在这样的方法中做出类似的东西 - 局部变量?
我需要的样本:
由于没有.onAnimationCompleted { // Some work... }
它的相当有问题。
通常,我需要具有以下特征的解决方案:
我的代码:
import SwiftUI
import Combine
struct ContentView: View {
@State var descr: String = ""
@State var onError = PassthroughSubject<Void, Never>()
var body: some View {
VStack {
BlurredTextField(title: "Description", text: $descr, onError: $onError)
Button("Commit") {
if self.descr.isEmpty {
self.onError.send()
}
}
}
}
}
struct BlurredTextField: View {
let title: String
@Binding var text: String
@Binding var onError: PassthroughSubject<Void, Never> …
Run Code Online (Sandbox Code Playgroud) 我有以下代码:
HStack(alignment: VerticalAlignment.top) {
Button("x"){
self.errorText = ""
}
//Spacer()
}
Run Code Online (Sandbox Code Playgroud)
我需要找到顶部的按钮。但按钮仍然位于 HStack 视图的中心。
我做错了什么?
PS:Spacer()
在这个地方使用对我来说不是解决方案。我需要精确对齐。
非必要部分:
@State var errorText: String = "Some long error text long long long long long long long long long long long long long long long long long long long long"
VStack{
Spacer()
HStack{
Text("Error: \(errorText)")
Spacer()
HStack(alignment: VerticalAlignment.top) {
Button("x"){
self.errorText = ""
}
//Spacer()
}
}
.frame(minHeight:10)
.padding(.all, 5)
}
Run Code Online (Sandbox Code Playgroud)
我不知道 VStack(HStack 父级)的高度,因为我不知道错误文本的大小;
Spacer() 不是解决方案,因为它使 VStack 高度达到窗口高度。