小编Cha*_*lie的帖子

如何将printf样式的函数传递给F#中的另一个函数

我想在F#中创建一个接受printf样式函数作为参数的函数,并使用该参数输出数据.用法如下:

OutputStuff printfn
Run Code Online (Sandbox Code Playgroud)

我的第一次尝试是让编译器为我解决这个问题:

let OutputStuff output =
    output "Header"
    output "Data: %d" 42
Run Code Online (Sandbox Code Playgroud)

这失败是因为它决定这output是一个函数获取string和返回unit,所以第二次调用失败.

接下来,我尝试声明output具有相同的签名printfn:

let OutputStuff (output : Printf.TextWriterFormat<'a> -> 'a) =
    output "Header"
    output "Data: %d" 42
Run Code Online (Sandbox Code Playgroud)

这会失败,因为编译器决定实际类型outputPrintf.TextWriterFormat<string> -> unit,所以第二次调用失败.它还会生成警告FS0064,指示第一次调用output导致代码不如类型注释更通用,这是问题的症结所在.

最后,我尝试将输出函数声明为单独的类型缩写:

type OutputMe<'a> = Printf.TextWriterFormat<'a> -> 'a
let OutputStuff (output : OutputMe<'a>) =
    output "Header"
    output "Data: %d" 42
Run Code Online (Sandbox Code Playgroud)

这失败的结果与之前的尝试相同.

如何说服编译器不专门化类型output并将其保留为Printf.TextWriterFormat<'a> -> 'a

f# type-inference

3
推荐指数
2
解决办法
282
查看次数

当值与字符串相互转换时,SQL Server 是否考虑文化/区域设置?

我正在尝试更新大型代码库以在格式化/解析值时正确指定CultureInfo和/或。IFormatProvider例如,当解析从用户那里获得的值时,我CultureInfo.CurrentCulture在调用 时传递TryParse,而当将浮点数转换为字符串以进行持久化时,我CultureInfo.InvariantCulture在调用 时传递ToString

我的问题是:生成 SQL 查询时,我应该使用不变区域性、SQL 服务器区域性还是什么来格式化数字等?也就是说,如果我的计算机设置为德语(德国),那么以下哪个查询是正确的?

select foo from bar where baz = 123.45
Run Code Online (Sandbox Code Playgroud)

或者

select foo from bar where baz = 123,45
Run Code Online (Sandbox Code Playgroud)

同样,如果我使用 SQLCAST将浮点值转换为字符串,SQL 将使用什么区域设置进行转换?

我确实搜索了 SQL 文档,但到目前为止我找不到任何好的答案。我确实找到了一些有关日期格式的信息(SET DATEFORMAT 等),但仅此而已。

注意:我意识到将输入传递给 SQL 查询的首选方法是通过参数,因此为了论证,我们假设我有充分的理由将它们格式化为查询字符串。此外,处理查询输入只是更广泛问题的一部分。

sql sql-server culture

2
推荐指数
1
解决办法
3768
查看次数

我应该避免使用Powershell脚本中的'dir'别名吗?

powershell指南建议避免在脚本中使用别名,例如拼写Get-Content而不是使用gc,而Foreach-Object不是使用%.

在大多数情况下,我认为这是一个很好的建议,但我很难用dir别名跟踪它,至少在与文件系统一起使用时(与注册表等).在可读性方面,在我看来,它dir是好的或者更好Get-ChildItem的.它也不像gc(Get-Content)或lp(Out-Printer)那样神秘,尽管可能没有cmd.exe脚本背景的人可能不同意.

有人对此有意见吗?我应该继续使用dir,还是试着更"正确"?

powershell scripting

1
推荐指数
3
解决办法
445
查看次数

C#项目设置编辑器中的键盘访问?

有没有人知道如何只使用键盘在Visual Studio的C#项目设置编辑器中切换主要选项卡/页面?我在谈论左侧的东西,标记为应用程序,构建,调试,资源,设置等.它可以在当前所选页面上的控件之间的Tab中正常工作,但我还没弄清楚如何切换在页面之间,我希望避免尽可能多地离开键盘.

我最常访问的页面是Debug页面,因此即使没有通用方法,直接转到该页面的快捷方式也没问题.我尝试了Project.StartOptions命令,但似乎不是这样.

accessibility keyboard-shortcuts visual-studio-2010 visual-studio

0
推荐指数
1
解决办法
235
查看次数