标签: named-parameters

如何拥有一个带有默认参数的方法,并且可以在 Groovy 中按名称覆盖该方法?

groovy 中的构造函数允许使用命名参数,方法参数允许使用默认值,但我似乎无法获得具有默认参数值的方法与命名参数一起使用。

理想情况下,我想要这样的东西:

def myMethod(def greeting = "Hello", def person = "World", def inflection = "!") {
    "${greeting} ${person}${inflection}"
}

assert myMethod() == "Hello World!"
assert myMethod(greeting: "Hi") == "Hi World!"
assert myMethod(inflection: "?", person: "bob") == "Hello Bob?"
assert myMethod("Sup") == "Sup World!"
assert myMethod("Word", "Dawg") == "Word Dawg!"
Run Code Online (Sandbox Code Playgroud)

这是我能得到的最接近的结果,但它非常丑陋,感觉不是很“常规”,并且在所有情况下都不能完全工作:

def myMethod(Map vars = [:]){

    vars.greeting = vars.greeting ?: "Hello"
    vars.person = vars.person ?: "World"
    vars.inflection = vars.inflection ?: "!"

    "${vars.greeting} ${vars.person}${vars.inflection}"
}
Run Code Online (Sandbox Code Playgroud)

methods groovy named-parameters default-parameters

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

如何向 Dart 类添加 getter,并在其构造函数上使用命名参数?

假设我有以下 Dart 类,其构造函数中有一个命名参数:

class TestClass {
  final int someValue;
  TestClass({this.someValue});
}

void someMethod() {
  TestClass testClass = new TestClass(someValue: 10);
  print(testClass.someValue);
}
Run Code Online (Sandbox Code Playgroud)

如何为该字段添加吸气剂?我正在尝试以下内容:

class TestClass {
  final int _someValue;
  TestClass({this.someValue});
  int get someValue => _someValue+2;
}
Run Code Online (Sandbox Code Playgroud)

getter named-parameters dart

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

什么'?' 在SQL中代表什么?

我有一个程序员的SQL:

$sql = "  
   INSERT INTO  
    `{$database}`.`table`  
   (  
    `my_id`,  
    `xType`,  
    `subType`,  
    `recordID`,  
    `textarea`  
   )  
   VALUES  
   (  
    {$my_id},  
    ?xType,  
    ?subType,  
    {$recordID},  
    ?areaText  
   ) ";  
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么他?在价值观之前使用?我怎样才能看到有什么价值?我做了echo,它显示?xType?xType.没有价值.什么 在SQL中代表什么?

mysql sql named-parameters

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

如何初始化一个使用命名参数的`HashTable`对象?

我们可以HashTable使用以下语法初始化对象.

var listTinhThanh = new System.Collections.Hashtable()
{ 
    { "key", someObject }
};
Run Code Online (Sandbox Code Playgroud)

我想以这样一种方式使用代码:

var listTinhThanh = new System.Collections.Hashtable()
{ 
    { Key:"key", Value:someObject }
};
Run Code Online (Sandbox Code Playgroud)

但这不起作用.你有办公室吗?

c# initialization hashtable named-parameters visual-studio-2010

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

使用Razor视图在路径值集合中动态命名参数

我使用辅助方法在视图中创建部分:

@helper CreateFacetSection(WebViewPage page, string sectionName,
                           List<FacetValue> model)
{
     var showMore = int.Parse(WebConfigurationManager.AppSettings["ShowMore"]);

     <section id="@sectionName">

     <h4>@sectionName</h4>

        <ul>
            @for (int i = 0; i < model.Count(); i++)
            {
                if (i >= showMore)
                {
                    @:<li class="hide">
                }
                else
                {
                    @:<li>
                }

                FacetValue fv = model.ElementAt(i);

                @page.Html.ActionLinkWithQueryString(fv.Range, "Search",
                                              new { sectionName = fv.Range }, null);

                @:(@fv.Count)

                @:</li >
            }
        </ul>   

        @if(model.Count > showMore)
        {
            <a href="#" class="show-more" data-section="@sectionName">
            @Localization.ShowMore &#9660;</a>
        }   

     </section>
}
Run Code Online (Sandbox Code Playgroud)

现在让我们说我@Html.ActionLink在上面的帮助器中使用了这个自定义助手:

 @Html.ActionLinkWithQueryString(fv.Range, "Search", new { sectionName = fv.Range …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc dynamic named-parameters routevalues razor

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

当命令类型是adCmdText时,是否可以使用命名参数?

我正在尝试通过Adodb.Command使用以下查询命名参数,但没有运气.

Select * From mytable Where col1 = Lower(@param1) And col2 = Upper(@param2) And col3 = @param1
Run Code Online (Sandbox Code Playgroud)

代码我使用了类似的东西.

Dim cmd
Set cmd = Server.CreateObject("Adodb.Command")
cmd.NamedParameters = True
cmd.CommandType = adCmdText
cmd.CommandText = "Select * From mytable Where col1 = Lower(@param1) And col2 = Upper(@param2) And col3 = @param1"
cmd.Parameters.Append cmd.CreateParameter("@param1", adVarchar, adParamInput, 20, "some text 1")
cmd.Parameters.Append cmd.CreateParameter("@param2", adVarchar, adParamInput, 20, "some text 2")
Set cmd.ActiveConnection = cn
Dim rs
Set rs = cmd.Execute
Run Code Online (Sandbox Code Playgroud)

问题是,这会导致RDBMS端出错.

Microsoft OLE DB Provider for …
Run Code Online (Sandbox Code Playgroud)

sql-server vbscript ado named-parameters asp-classic

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

当我的通配符参数中有双斜杠时,为什么 Gorilla mux 会重定向?

这是我的处理程序:

router.HandleFunc("/g/{gparam:.*}", MyHandler)
Run Code Online (Sandbox Code Playgroud)

但是当我传递类似“123://abc”之类的东西作为参数时,它会重定向并将url中的参数修改为“123:/abc”。

他们是一种避免这种情况的方法吗?

slash named-parameters go gorilla

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

将命名参数传递给方法

代码:

class AllTheColorsOfTheRainbow {
    private int hue = 0;
    
    int anIntegerRepresentingColors;    
    
    void changeTheHueOfTheColor(int newHue) {
        this.hue = newHue;
    }

    public int getHue(){
        return this.hue;
    }
}

public class Ex11 {
    public static void main(String [] args){
        AllTheColorsOfTheRainbow a = new AllTheColorsOfTheRainbow();
        a.changeTheHueOfTheColor(newHue = 1);
        System.out.println(a.getHue());
    }
}
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

 javac Ex11.java 
Ex11.java:18: error: cannot find symbol
        a.changeTheHueOfTheColor(newHue = 1);
                                 ^
  symbol:   variable newHue
  location: class Ex11
1 error
Run Code Online (Sandbox Code Playgroud)

这是什么意思,我该如何纠正?

java arguments syntax-error named-parameters

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

在装饰器中命名的关键字?

在我去查看其他人的代码之前,我一直在尝试编写自己版本的memoizing装饰器.老实说,这更像是一种有趣的运动.然而,在玩耍的过程中,我发现我不能用装饰器做我想做的事情.

def addValue( func, val ):
    def add( x ):
        return func( x ) + val
    return add

@addValue( val=4 )
def computeSomething( x ):
    #function gets defined
Run Code Online (Sandbox Code Playgroud)

如果我想这样做,我必须这样做:

def addTwo( func ):
    return addValue( func, 2 )

@addTwo
def computeSomething( x ):
    #function gets defined
Run Code Online (Sandbox Code Playgroud)

为什么我不能以这种方式使用装饰器的关键字参数?我做错了什么,你能告诉我我应该怎么做吗?

python decorator keyword named-parameters

0
推荐指数
2
解决办法
252
查看次数

为什么我的查询或jpa查询在春天不起作用

当我在我的spring项目中运行此查询时,它只返回一个错误.我尝试了不同的方法,没有任何结果,如果有人可以帮助我会非常好.我有3个表:User,Role和User_Role,我的地址是嵌入的.也使用连接表.

所有其他类都是:User,Role和User_Role spring security

    public List<User> getUsersByNameOrLogin(final String value){
    List<User> result = new ArrayList<User>(0);

    if(value ==null){
        return result;
    }

    final StringBuilder jpql = new StringBuilder("SELECT u FROM User u WHERE ");
    jpql.append(" u.lastname like  "+value);
   jpql.append(" OR u.firstname like  "+value);
    jpql.append(" OR u.email like  "+value);

    final String valueLike = "%"+value+"%";

    result =  entityManager.createQuery(jpql.toString(), User.class)
            .setParameter("lastname", valueLike)
           .setParameter("firstname", valueLike)
           .setParameter("email", valueLike)
            .getResultList();

    return result;
}  
Run Code Online (Sandbox Code Playgroud)

错误是:

无法解析属性:姓氏:用户[SELECT u FROM User u WHERE u.lastname like pappo or u.firstname like pappo or …

java spring jpa named-parameters

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

Groovy SQL 命名列表参数

我想在 SQL 查询中使用 Map 的键集作为列表参数:

query = "select contentid from content where spaceid = :spaceid and title in (:title)"
sql.eachRow(query, [spaceid: 1234, title: map.keySet().join(',')]) {
    rs ->
        println rs.contentid
}
Run Code Online (Sandbox Code Playgroud)

我可以使用单个值,但不能使用集合或列表。这是我到目前为止所尝试过的:

map.keySet().join(',')
map.keySet().toListString()
map.keySet().toList()
map.keySet().toString()
Run Code Online (Sandbox Code Playgroud)

地图使用字符串作为键

Map<String, String> map = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
Run Code Online (Sandbox Code Playgroud)

另外,我没有收到错误。我只是没有打印任何内容,就像有一个空结果集一样。

sql groovy named-parameters

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

LocalDate::of - 不能使用提供的参数调用以下函数

在 kotlin 中,这是有效的:

LocalDate.of(2023, 1, 1)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用命名参数时,出现错误:

不能使用提供的参数调用以下函数:

public open fun of(p0: Int, p1: Month!, p2: Int): LocalDate! 在 java.time.LocalDate 中定义

public open fun of(p0: Int, p1: Int, p2: Int): LocalDate! 在 java.time.LocalDate 中定义

与任一:

LocalDate.of(year=2023, month = Month.JANUARY, dayOfMonth=1)
Run Code Online (Sandbox Code Playgroud)

或者

LocalDate.of(year=2023, month = 1, dayOfMonth=1)
Run Code Online (Sandbox Code Playgroud)

named-parameters kotlin

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

像'LIMIT 0,50'这样的字符串可以和命名参数一起使用吗?

我正在更新一些旧的PHP代码并遇到了一个我不完全理解的问题.在mysql_*函数的旧时代,您可以在SQL查询中包含一个变量,如:

$query = "SELECT * FROM table $limit";
Run Code Online (Sandbox Code Playgroud)

哪里$limit = "LIMIT 0,50";.因此完整的查询是

$query = "SELECT * FROM table LIMIT 0,50";
Run Code Online (Sandbox Code Playgroud)

一切都很好.但是,对于PDO预处理语句和命名参数,除非您分解限制语句,否则这种类型的简单替换似乎不可能.例如:

$stmt = $conn->prepare('SELECT * FROM table :myLimit');
$stmt->execute(array(':myLimit'=>' LIMIT 0,50'));
Run Code Online (Sandbox Code Playgroud)

导致错误:

错误:SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法中有错误; 检查与您的MySQL服务器版本对应的手册,以便在"?"附近使用正确的语法 在第1行

(在旁注上我发现错误完全没用,因为没有使用问号 - 但回到手头的问题)

但是,如果我将该查询更改为以下内容,以便进一步细分LIMIT:

$stmt = $conn->prepare('SELECT * FROM table LIMIT :start,:end ');
$stmt->execute(array(':start'=>0,':end'=>50));
Run Code Online (Sandbox Code Playgroud)

它很棒.

  • 那么为什么不使用:myLimit作为命名参数和 array(':myLimit'=>' LIMIT 0,50')值的工作呢?
  • 使用命名参数有哪些规则,它们与旧的mysql_*函数可以使用的SQL字符串中的简单变量替换有何不同?

php.net上的PDO页面有些含糊不清,当涉及到什么可以和不能用作命名参数时,我正在寻找比我发现的更深入的东西:

  • 您必须为要传递给语句的每个值包含唯一的参数标记
  • 您不能在预准备语句中两次使用同名的命名参数标记.
  • 您不能将多个值绑定到单个命名参数,例如,SQL语句的IN()子句.

我目前正在使用PHP 5.1.6

php mysql pdo prepared-statement named-parameters

-26
推荐指数
1
解决办法
1295
查看次数