标签: named-parameters

Mathematica中的可选命名参数

使用可选的命名参数定义函数的最佳/规范方法是什么?为了使混凝土,让我们创建一个函数foo与命名的参数a,bc,其默认为1,2,3,分别.为了比较,这是一个foo带位置参数的版本:

foo[a_:1, b_:2, c_:3] := bar[a,b,c]
Run Code Online (Sandbox Code Playgroud)

以下是命名参数版本的示例输入和输出foo:

foo[]                  --> bar[1,2,3]
foo[b->7]              --> bar[1,7,3]
foo[a->6, b->7, c->8]  --> bar[6,7,8]
Run Code Online (Sandbox Code Playgroud)

当然,在命名参数之前使用位置参数也很容易.

wolfram-mathematica function named-parameters

12
推荐指数
2
解决办法
2274
查看次数

带有命名参数的vsprintf或sprintf,或PHP中的简单模板解析

我正在寻找一种方法来为或使用命名参数.sprintfprintf

例:

sprintf(
  'Last time logged in was %hours hours, 
   %minutes minutes, %seconds seconds ago'
  ,$hours,$minutes, $seconds
);
Run Code Online (Sandbox Code Playgroud)

或通过vsprintf和一个关联数组.

我在这里找到了一些编码示例

function sprintfn ($format, array $args = array())
Run Code Online (Sandbox Code Playgroud)

http://php.net/manual/de/function.sprintf.php

和这里

function vnsprintf( $format, array $data)
Run Code Online (Sandbox Code Playgroud)

http://php.net/manual/de/function.vsprintf.php

人们写自己的解决方案.

但我的问题是,是否有可能有一个标准的PHP解决方案来实现这一点,还是有另一种方式,也许是由PEAR提供的简单的PHP模板,我可以通过坚持标准的PHP实现这一点?

谢谢你的帮助.

php string.format printf templates named-parameters

12
推荐指数
5
解决办法
2万
查看次数

如何从命令行提供非 slurpy 数组或命名数组?

首先:raku (perl6) 很棒。克罗也是。只用了一个周末就坠入爱河。但是现在我偶然发现了一些必须非常简单的东西。

如果我在多分派 MAIN 中使用 slurpy 参数,则可以识别并完美运行:

multi MAIN( 'config', 'add', *@hostnames ) {
Run Code Online (Sandbox Code Playgroud)

但是,如果我将其设为非 slurpy 数组,则要么无法识别,要么我不知道如何从命令行提供它:

multi MAIN( 'config', 'add', @hostnames ) {
Run Code Online (Sandbox Code Playgroud)

我希望这些调用之一能够工作:

$ cli.raku config add www.example.com example.com
$ cli.raku config add www.example.com,example.com
$ cli.raku config add www.example.com, example.com
Run Code Online (Sandbox Code Playgroud)

Cro CLI 中使用了类似的构造,但是没有示例说明如何使用文档中的数组调用其中一个命令。

我也用一个数组作为命名参数尝试了这个:

my %*SUB-MAIN-OPTS = :named-anywhere;
multi MAIN( 'config', 'add', :@hostnames) {
Run Code Online (Sandbox Code Playgroud)

鉴于raku 文档中的示例,我希望它可以工作:

$ cli.raku config add --hostnames=www.example.com example.com
Run Code Online (Sandbox Code Playgroud)

但它没有,也没有逗号或空格逗号分隔的变体。在所有情况下,我都会获得使用信息。

multiple-dispatch command-line-interface named-parameters raku

12
推荐指数
1
解决办法
139
查看次数

如何为string.Format设置命名参数?

调用时出现C#错误:

string.Format(format:"abbccc", 1,22);
Run Code Online (Sandbox Code Playgroud)

错误是"在指定了所有固定参数后必须出现命名参数规范"

我怎样才能解决这个问题?

[编辑]

我更喜欢使用命名参数.

c# string named-parameters

11
推荐指数
1
解决办法
5521
查看次数

Scala属性问题

我还在学习Scala,但我认为有趣的一点是Scala模糊了方法和字段之间的界限.例如,我可以建立一个这样的类......

class MutableNumber(var value: Int)
Run Code Online (Sandbox Code Playgroud)

这里的关键是constructor-argument中的var自动允许我像java中的getter/setter一样使用'value'字段.

// use number...
val num = new MutableNumber(5)
num.value = 6
println(num.value)
Run Code Online (Sandbox Code Playgroud)

如果我想添加约束,我可以通过切换到使用方法代替实例字段来实现:

// require all mutable numbers to be >= 0
class MutableNumber(private var _value: Int) {
    require(_value >= 0)

    def value: Int = _value
    def value_=(other: Int) {
        require(other >=0)
        _value = other
    }
}
Run Code Online (Sandbox Code Playgroud)

由于API不会更改,因此客户端代码不会中断:

// use number...
val num = new MutableNumber(5)
num.value = 6
println(num.value)
Run Code Online (Sandbox Code Playgroud)

我的挂机是添加到Scala-2.8的命名参数功能.如果我使用命名参数,我的API 确实会改变,它确实打破了api.

val num = new MutableNumber(value=5)  // old API
val …
Run Code Online (Sandbox Code Playgroud)

scala properties javabeans named-parameters scala-2.8

11
推荐指数
1
解决办法
2665
查看次数

Scala将命名和默认参数与隐式参数结合使用

考虑以下:

def f(implicit a: String, y: Int = 0) = a + ": " + y
implicit val s = "size"
println(f(y = 2))
Run Code Online (Sandbox Code Playgroud)

最后一个表达式导致以下错误:

not enough arguments for method f: (implicit a: String, implicit y:
Int)java.lang.String. Unspecified value parameter a.
Run Code Online (Sandbox Code Playgroud)

但是,如果为隐式参数a提供默认值,则没有问题:

def f(implicit a: String = "haha!", y: Int = 0) = a + ": " + y
implicit val s = "size"
println(f(y = 2))
Run Code Online (Sandbox Code Playgroud)

但最后一行打印

haha!: 2
Run Code Online (Sandbox Code Playgroud)

虽然我本来期待的

size: 2
Run Code Online (Sandbox Code Playgroud)

因此隐含值's'没有被提取.如果你没有为f提供任何参数而只是调用

println(f)
Run Code Online (Sandbox Code Playgroud)

那么隐含的价值就会被提起来

size: 0
Run Code Online (Sandbox Code Playgroud)

有人能否了解这里发生的事情?

scala default-value named-parameters implicits

11
推荐指数
1
解决办法
1218
查看次数

Resharper - 在进行代码清理时保留命名参数

我们采用了一种约定,当使用"非显而易见"参数调用C#函数时,即使没有必要,我们也会使用命名参数.

例如

obj.Process(save: true)
Run Code Online (Sandbox Code Playgroud)

而不是

obj.Process(true)
Run Code Online (Sandbox Code Playgroud)

虽然这是不必要的,但是当浏览代码以查看正在发生的事情时,它会变得更容易,特别是对于布尔值或幻数.

但是,resharper的代码清理习惯会删除这些代码.我找不到告诉它保留命名参数的方法 - 是否有一个?

c# resharper named-parameters resharper-9.0

11
推荐指数
1
解决办法
1839
查看次数

在node.js中使用命名参数

我正在使用node.js v4.3.1

我想在调用函数时使用命名参数,因为它们更具可读性.

在python中,我可以用这种方式调用函数;

info(spacing=15, width=46)
Run Code Online (Sandbox Code Playgroud)

我如何在node.js中做同样的事情?

我的javascript函数看起来像这样;

function info(spacing, width)
{
   //implementation
{
Run Code Online (Sandbox Code Playgroud)

javascript function named-parameters node.js

10
推荐指数
2
解决办法
7836
查看次数

为什么MySQLi库本身不支持命名参数?

来自http://php.net/manual/en/mysqli.quickstart.prepared-statements.php的正确MySQLi参数化查询语法:

$stmt = $mysqli->prepare("INSERT INTO test(id) VALUES (?)");
$stmt->bind_param("i", $id);
Run Code Online (Sandbox Code Playgroud)

但绝不是这样的:

$stmt = $mysqli->prepare("INSERT INTO test(id) VALUES (:id_value)");
$stmt->bind_param("i", "id_value", $id);
Run Code Online (Sandbox Code Playgroud)

在我看来,named parameter替换是在API级别实现的合理特性.我很惊讶MySQLi只unnamed parameters在库中实现.

有正当理由吗?看看PDO,DQL,ORM如何在查询中采用命名参数对我来说没有意义.

我希望MySQLi开发人员不是"我们很懒,不想"的情况.我相信一定有充分的理由,我正在寻找这个理由,或者寻找理由的方法.MySQLi扩展库中未实现命名参数的原因.

php mysqli named-parameters

10
推荐指数
1
解决办法
2338
查看次数

Kotlin:用于命名的lambda参数是什么?

在Kotlin中,可以在其定义中给出lambda参数名称.

fun example(lambda: (a: Int, b: Int) -> Int)
Run Code Online (Sandbox Code Playgroud)

如您所见,ab在lambda中命名.我认为这对于IDE来说可能是非常有用的信息,生成带有参数名称填充的lambda ...但至少对于IntelliJ,该功能要么不存在,要么以我不知道的方式工作.

那么,命名的lambda参数的用途是什么?他们是否以某种方式改变了编译输出?你有没有可以使用它们的技巧?

lambda anonymous-function named-parameters named kotlin

10
推荐指数
1
解决办法
371
查看次数