- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有以下使用 C# 6 的泛型类:
public class IncludeMapper<T1> {
private readonly Dictionary<String, List<LambdaExpression>> _properties = new Dictionary<String, List<LambdaExpression>>();
public IncludeMapper<T1> Add<T2, T3>(String property, Expression<Func<T1, T2>> path1, Expression<Func<T2, T3>> path2) {
if (!_properties.ContainsKey(property))
_properties.Add(property, new List<LambdaExpression> { path1, path2 });
return this;
}
public IncludeMapper<T1> Add<T2, T3, T4>(String property, Expression<Func<T1, T2>> path1, Expression<Func<T2, T3>> path2, Expression<Func<T3, T4>> path3) {
if (!_properties.ContainsKey(property))
_properties.Add(property, new List<LambdaExpression> { path1, path2, path3 });
return this;
}
}
Add 方法有几个表达式(路径),它们采用一个 Ti 和 Ti+1。
有没有办法简化我的代码?在路径 7 之前,我将需要至少 4 个这样的方法。
最佳答案
Is there a way to simplify my code?
好吧,你可以一点来简化它:
public class IncludeMapper<T1> {
private readonly Dictionary<String, List<LambdaExpression>> _properties =
new Dictionary<String, List<LambdaExpression>>();
private IncludeMapper<T1> AddImpl(
string property,
params LambdaExpression[] expressions)
{
if (!_properties.ContainsKey(property))
{
_properties.Add(property, paths.ToList());
}
return this;
}
public IncludeMapper<T1> Add<T2, T3>(
String property,
Expression<Func<T1, T2>> path1,
Expression<Func<T2, T3>> path2) =>
AddImpl(path1, path2);
public IncludeMapper<T1> Add<T2, T3, T4>(
String property,
Expression<Func<T1, T2>> path1,
Expression<Func<T2, T3>> path2,
Expression<Func<T3, T4>> path3) =>
AddImpl(path1, path2, path3);
...
}
您仍然需要为每个您想要支持的“通用元数”提供另一种方法,但至少实现是微不足道的。
当然,如果您希望能够指定多个路径,但每个路径都必须是同一类型,那很容易 - 因为那样您就可以使用 params
具有单一 类型的参数。但是参数必须是一个特定的Expression<TDelegate>
type 如果您希望能够使用 lambda 表达式作为参数,并且看起来您希望能够改变所涉及的类型。
关于c# - Ti 和 Ti+1 的通用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38220293/
是否可以在需要参数的另一个程序中执行一个程序? (没有内联) 例如 ________________ - PROGRAM:ADD - :Prompt A,B - :A+B>C _________
在大多数编程语言中,您可以在输出过程中将字符串与变量混合和匹配。但是,我似乎找不到找到这种方法的好方法。这是我的代码: Prompt A,B √(A^2+B^2)->C If iPart(C)≠C T
我正在尝试将字符串转换为 TI-84 上的变量。 例如, "XYZ"→Str0 fnInt(X²,sub(Str0,1,1),0,1)→A 但它不让我。 我知道这似乎是一种非常低效的方法(为什么不直接
我一直在寻找在 TIBASIC 中制作一个程序,该程序可以评估代码正在运行的计算器类型,无需汇编。因为我认为没有任何东西可以从 about 屏幕获取信息。这是我想出的一段代码: :ClrDraw :T
运行以下代码时出现语法错误: Prompt A,B,C B^2-4*A*C→Δ If Δ IS(0) Then (-B-√(Δ))/(2*A)→E (-B+√(Δ))/(2*A)→F End 这段代码
所以我制作了一个 TI-BASIC 程序,该程序伪造计算器的主屏幕,但故意给出错误的数学方程式答案。这是代码: :ClrHome :Lbl 1 :Input "",A :Disp rand :Goto
我有以下使用 C# 6 的泛型类: public class IncludeMapper { private readonly Dictionary> _properties = new Dict
在 TI-BASIC 编程语言(特别是 TI-84+)中,您如何创建输入表单,例如包含在 TI-84+ 上的默认应用程序中的表单。 此处包含的图像显示了我正在尝试创建的示例:在执行函数之前,您可以滚动
基本上,我只希望 TI basic 在程序结束时不显示“完成”行。我怎样才能做到这一点? 谢谢, 最佳答案 您可以通过在程序末尾写入一个空白值来完成此操作: :ClrHome:" 更多详情:http:
我想知道如何制作一些如果 X=5 且 Y=2 的东西,然后让它输出类似的东西Hello 2 World 5。 在Java中我会这样做String a = "Hello"+ Y + "World"+ X
如果已知两点,我有一个代码可以计算直线的斜率;但是,它仅返回十进制格式的斜率。我希望能够选择将小数转换为分数。这是我到目前为止所做的: :Disp " " :Input "PAIR 1: ",T :I
我有这个简单的 Titanium js 脚本。 app.js var win = Ti.UI.createWindow(); var webview = Ti.UI.createWebView
我正在使用 appcelerator.com 的 Titanium 来创建 iOS 应用程序。 我同时使用 slider 和开关。 这两个官方示例都展示了如何创建这些东西,以及如何改变它们的状态,但令
我的 TI-84 Plus C 银版计算器上有一个 TI BASIC 的小代码,可以根据患者的体重确定正确的药物剂量。例如,如果每千克患者体重服用 5 毫克阿司匹林(事实并非如此),那么代码应该告诉我
我在理解如何运行 GIZA++ 的基础知识时遇到问题。 我通过 StackOverflow ( Is there a tutorial about giza++?) 上的讨论以及人们在那里提供的链接进
我最近买了一台TI-84 Plus CE,一直在用TI-BASIC编写程序。 我正在尝试制作一个简单的文本编辑器,我需要将字符代码转换为字符。但是,char()命令好像不存在? 请帮忙! 最佳答案 我
数字变量是否遵循 TI 计算器上的记录标准? 我真的很惊讶地注意到我的 TI 83 Premium CE 测试实际上返回了 true(即 1): 0.1 -> X 0.1 -> Y 0.01 -> Z
我今天在数学课上在 TI-84 上玩编程,我决定尝试编写一个程序来读取方程,然后用它做一些事情。但是我在阅读方程式时遇到了麻烦。我试过 :Prompt Y1但是当我尝试使用该程序时,我一直收到数据类型
我想制作一个可以记录语音并对其进行转换的程序,因此听起来好像来自德州TI-99。您对此有什么好的想法和资源吗? 最佳答案 那些旧的语音合成器大多数都是直接在芯片内构建的。也许您可以找到听起来像芯片的合
我正试图让我的头脑围绕J。在 easy-j.pdf(可用 here ;第 19 页)介绍中有这个钩子(Hook): ti=.{.(*i.)}. NB. ti=times index gener
我是一名优秀的程序员,十分优秀!