我想替换以下代码:
var R = Challenges.FindAll().SetSortOrder("UseCount").First();
var Q = Query.EQ("_id", R._id);
var U = Update.Inc("UseCount", 1);
Challenges.Update(Q, U);
return R;
Run Code Online (Sandbox Code Playgroud)
这是意图:
我在一个名为'UseCount'的数据库中有一个字段,我想找到值较低的记录.如果许多记录具有相同的值,我只想要第一个(它并不重要).
同时,我希望将"UseCount"字段增加一个.
我已经看过FindAndModify的例子,但它似乎与字段比较(即:"field"= value),而不是像我正在做的搜索.
处理这个问题的最佳/最有效方法是什么?
我有一个带有静态字段和 json 的静态类。
我可以将 json 反序列化为动态对象,因此我拥有所有字段,并且它们与类中的静态字段完全匹配。
如何使用反射来枚举字段并将值从动态类复制到静态类字段中?
我无法改变架构,使其成为单例等等;它是共享代码,并且该类将保持静态,因为它是共享库使用的全局共享设置对象。
该解决方案需要使用反射,因为类会随着时间的推移而随着新成员的出现而演变。否则我可以编写一个自定义反序列化器。
添加更多细节,但确实不多:
我有这个静态类:
static class A
{
static int I;
static string S;
}
Run Code Online (Sandbox Code Playgroud)
和一个与字段完全匹配的 json:
{
"I" : 3,
"S" : "hello"
}
var Data = JsonConvert.Deserialize<dynamic>(...);
Run Code Online (Sandbox Code Playgroud)
我想用我从 json 反序列化到动态对象中的值来初始化 A 类的静态字段。
另一个编辑:
我想出了与大卫写的类似的东西,但是由于我使用反序列化器来转换类型,所以效率较低,所以大卫的解决方案更好。
这是我想出的:
foreach (var Destination in typeof(Settings).GetProperties())
{
var Name = Destination.Name;
var T = Destination.PropertyType;
var Value = JsonConvert.DeserializeObject("\"" + JT[Name] + "\"", T);
Destination.SetValue(null, Value);
}
Run Code Online (Sandbox Code Playgroud) 使用以下代码:
public class test
{
public static void DoSomething()
{
Console.WriteLine("test");
}
}
public class test2
{
public test2()
{
var a = new test();
a.DoSomething(); // invalid
test.DoSomething(); // is valid
}
}
Run Code Online (Sandbox Code Playgroud)
我需要通过基类访问静态方法,而不是通过实例.
但是,让用户通过实例访问它会有什么不利之处呢?在我看来,它有助于提高可读性.
具有以下功能:
let Calc =
// do something
if something
(false, 0)
else
(true, some value)
Run Code Online (Sandbox Code Playgroud)
如何定义输出字段的名称?
在C#中,我可以这样做:
(bool Success, int Value) Calc()....
Run Code Online (Sandbox Code Playgroud)
这样,当我得到结果时,就可以按名称访问“成功”和“值”字段;我该如何在F#中执行相同的操作?
在C#中,我可以这样做:
public (bool result, string message) Hello()
{
...
return (true, "ok")
}
Run Code Online (Sandbox Code Playgroud)
我试图弄清楚如何在F#中做到这一点。
我可以:
let Hello () =
(true, "ok")
Run Code Online (Sandbox Code Playgroud)
但是,当我从C#调用Hello时,必须将元素获取为“ Item1”和“ Item2”。
有没有办法在返回的元组中命名字段?
我试过了:
let hello () : (result, message ): bool * string =
Run Code Online (Sandbox Code Playgroud)
以及其他一些变体,但我无法做到这一点。
在C#中,返回的类型被视为元组对象,而上面显示的纯C#示例似乎并未使用元组类型。
我猜你不能在元组对象中命名项目,但是有没有办法像C#中那样返回参数?
我正在尝试从:
sprintf "%3.1f" myNumber
Run Code Online (Sandbox Code Playgroud)
到:
sprintf myFormatter myNumber
Run Code Online (Sandbox Code Playgroud)
这是不可能的
我遇到的情况是数字精度取决于某些设置,因此我希望能够创建自己的格式化程序字符串。
我知道可以使用 String.Format 来完成,但我很好奇是否有使用 sprintf 或 ksprinf 的 F# 方式;可以吗?
I have a system where I collect data from a grid. It is organized in rows.
Each row processed returns a Result<data, string list> object.
The list in the error case is a list of errors encountered during the parsing. Each row can have multiple errors, but only one valid result.
I would like to aggregate the data to a list data list if there are no errors, or make a complete list of errors, in the string list form …
使用以下示例:
type Person = {First:string; Last:string}
let alice = {First="Alice"; Last="Doe"}
let {First=first} = alice
Run Code Online (Sandbox Code Playgroud)
最后一个let到底做了什么?
这个网站和网络上都有大量类似的问题,这让我相信 AWS 的文档确实存在问题,因为这给很多人带来了悲伤。
所以,我决定一步步发布最基本的示例。
首先,我们创建一个新函数:
它有默认的“一切”,我没有碰任何一行代码。
(红色错误消息是 AWS 与 Firefox 配合不佳)
默认代码通过测试:
现在我添加一个触发器:
这给了我触发器的链接:
我可以转到 API 端点:https://spy3z1jvu8.execute-api.ap-northeast-1.amazonaws.com/default/test
它有效:
现在,问题就要开始了。我打开创建的 API 网关:
并尝试默认链接:https://spy3z1jvu8.execute-api.ap-northeast-1.amazonaws.com
和...
大多数有类似问题的人似乎都遇到了网关问题,需要一些 json 内容等,但这里是一个未修改的 AWS 示例,并且网关链接不起作用。
故障排除步骤要求添加日志记录并以这种方式进行故障排除,但日志中没有任何有趣的内容。
这个问题的根源可能是什么?
代码用于将历史财务数据打包成16个字节:
type PackedCandle =
struct
val H: single
val L: single
val C: single
val V: int
end
new(h: single, l: single, c: single, v: int) = { H = h; L = l; C = c; V = v }
member this.ToByteArray =
let a = Array.create 16 (byte 0)
let h = BitConverter.GetBytes(this.H)
let l = BitConverter.GetBytes(this.L)
let c = BitConverter.GetBytes(this.C)
let v = BitConverter.GetBytes(this.V)
a.[00] <- h.[0]; a.[01] <- h.[1]; a.[02] <- h.[2]; a.[03] <- h.[3]
a.[04] …Run Code Online (Sandbox Code Playgroud)