Joy.Then
0.0.2
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package Joy.Then --version 0.0.2
NuGet\Install-Package Joy.Then -Version 0.0.2
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Joy.Then" Version="0.0.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Joy.Then --version 0.0.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Joy.Then, 0.0.2"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Joy.Then as a Cake Addin #addin nuget:?package=Joy.Then&version=0.0.2 // Install Joy.Then as a Cake Tool #tool nuget:?package=Joy.Then&version=0.0.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Inspired by syntactic sugar for Swift initializers: Then
不同点,在C#中
- 闭包(或称为lambda表达式)中的参数必须显式地通过参数名称来引用,没有类似于Swift中闭包(closure)的$0、$1等语法来直接引用闭包内的参数。
- 没有像Swift中一样的inout参数修饰符,类似的ref修饰符在结合委托使用时也很繁琐(调用时必须显式写出
(ref T t) => { ... }
),还不如就将委托从Action替换为Func。 - Then、With扩展相比使用对象初始化器(Object Initializers)、with表达式(With Expression)的优势
- 不一定要直接在对象初始化时使用,初始化后可任意调用
- StackTrace中源码位置指示(行号)更准确
- 不止可以给属性/字段赋值,还可以调用方法等
- Object Initializers的主要作用在于对象的完整性,防止出现未初始化完全的状态。
使用示例
public record struct Person
{
public string Name { get; set; }
public int Age;
public Person(string Name, int Age)
{
this.Name = Name;
this.Age = Age;
}
public void Work() { }
}
var lisi = new Person().With(x =>
{
x.Name = NullName[0..1];
x.Age = int.Parse("abc");
x.Work();
return x;
});
lisi.Do(x => x.Work());
var output = new StringBuilder().Then(x => x.Append("joy")).ToString();
对比
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
This package has no dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Joy.Then:
Package | Downloads |
---|---|
Joy.Base
Basic Extensions |
GitHub repositories
This package is not used by any popular GitHub repositories.