有没有办法在perl/python中使用命名参数
例如
object.method(arg1 => value1, arg2 => value2, arg3 => 0);
Run Code Online (Sandbox Code Playgroud)
在C#4.0之前的C#中?
所以,假设你有:
public void TestFishsticks()
{
var fishes = GetFishstick(false);
}
private object GetFishstick(bool getBigFishes)
{
return FishsticksManager().GetFishsticks(getBigFishes);
}
Run Code Online (Sandbox Code Playgroud)
VS
public void TestFishsticks()
{
var fishes = GetFishstick(getBigFishes: false);
}
private object GetFishstick(bool getBigFishes)
{
return FishsticksManager().GetFishsticks(getBigFishes);
}
Run Code Online (Sandbox Code Playgroud)
这有什么理由吗?
在我目前的公司代码库中,我们似乎都做了两个,但似乎没有理由一个在另一个.我可以通过第二种选择看到一个小的可读性改进,因为你可以立即看到参数名称,但你还可以通过intellisense看到它?
在Oracle中调用过程/函数时,是否存在位置和命名(和默认)类型的参数序列规则?
...就像位置参数首先......
或者名字出现在列表的最后?任何例子(它不在文档中)?
那个案子怎么不迷路呢?例如,这是一个返回bool的函数,但需要10个参数:
bool myFunc(bool par1 = true, bool par2 = false, bool par3 = true,
bool par4 = true /* and so on */ ) {}
Run Code Online (Sandbox Code Playgroud)
并且假设函数参数设置为90%的默认情况.但偶尔客户端代码只想改变其中的一小部分.我在这里看到的唯一选择是精心复制所有默认参数,直到我们找到需要更改的参数.有可能以这种方式调用此函数:
bool myVal = myFunc(par10 = true, par20 = false);
Run Code Online (Sandbox Code Playgroud)
因此,任何阅读代码的人都知道代码的内容(参数的名称很长但很有意义),而且当我更改函数定义时,无论何时调用它来更新默认参数,我都不需要查看?
我试图在spring JdbcTemplate中使用命名参数在db中插入值.我正在使用setter注入到NamedParameter但它显示异常.如果我使用构造函数注入然后它将工作正常.我不知道我在哪里做错任何人帮我解决这个问题
码
Employee.java
public class Employee {
String name,pwd;
int en;
public Employee(String name,String pwd,int en){
this.en=en;
this.name=name;
this.pwd=pwd;
}
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public String getPwd(){
return pwd;
}
public void setPwd(String pwd){
this.pwd=pwd;
}
public int getEn(){
return en;
}
public void setEn(int en){
this.en=en;
}
}
Run Code Online (Sandbox Code Playgroud)
EmployeeDao.java
import java.sql.*;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementCallback;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import java.util.*;
import org.springframework.dao.DataAccessException;
public class EmployeeDao {
NamedParameterJdbcTemplate template;
public void setTemplate(NamedParameterJdbcTemplate …Run Code Online (Sandbox Code Playgroud) 我试图运行以下代码VBScript但它没有编译最后一个语句.是因为VBScript不允许命名参数吗?
Filename_Argument = WScript.Arguments(0)
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkbook = objExcel.Workbooks.Add()
Workbooks.OpenText Filename:=Filename_Argument, Origin _
:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _
, Comma:=False, Space:=False, Other:=True, OtherChar:="|", FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1)), TrailingMinusNumbers:=True
Run Code Online (Sandbox Code Playgroud) 我正在处理一个涉及我编写查询以从数据库中获取数千条记录的问题。我将使用的查询将在WHERE条件中包含2个IN子句。
据我所知,这可能是有限的,因此请纠正我,对于此用例,我无法使用jdbctemplate。我将不得不转向NamedParameterJdbcTemplate,因为NamedParameterJdbcTemplate使我们可以灵活地使用IN子句。
现在,我正在寻找答案的问题如下。
问:> NamedParameterJdbcTemplate没有setFetchSize方法。有没有一种方法可以设置NamedParameterJdbcTemplate的获取大小?
问>是否有人对NamedParameterJdbcTemplate的默认获取大小有任何想法?对于JdbcTemplate,它设置为10。我知道。那NamedParameterJdbcTemplate呢?
Q>即使我使用NamedParameterJdbcTemplate,也无法解决我的问题,因为如果我们假设NamedParameterJdbcTemplate的获取大小也为10,则获取几千条记录仍会花费很多我的应用程序时间。
任何人都可以提出解决方案或指导我朝正确的方向发展吗?
所以我刚看到一个使用命名参数的函数指针声明示例:
int (*func)(int a, int b) = &foo;
Run Code Online (Sandbox Code Playgroud)
我假设这是定义良好的代码导致它编译并运行良好:https://ideone.com/C4mhsI
但我以前从未见过这个(可能是因为它增加了已经难以解析的函数指针的复杂性.)尽管如此,我还是希望看到一个声明,这是合法的,而不是一些疯狂的gcc扩展.有人能找到我的东西吗?
c++ parameters function-pointers named-parameters language-lawyer
说我有以下简单的两种方法:
class Question
{
public void MyMethod()
{
Console.WriteLine("no params here");
}
public void MyMethod(object o = null)
{
Console.WriteLine("an object here");
}
}
Run Code Online (Sandbox Code Playgroud)
我这样调用一个:
new Question().MyMethod();
Run Code Online (Sandbox Code Playgroud)
它导致no params方法的调用,在这里写"没有params".
我知道我仍然可以打电话给对方,比如说
new Question().MyMethod(null);
Run Code Online (Sandbox Code Playgroud)
但我的问题是,为什么编译器不会警告我可能存在歧义或强迫我特别注意?它如何决定要拨什么电话?只是参数较少的那个?
我有一个方法,我有几个可选的布尔参数,对象的不同属性将根据哪些参数为真给出一个值.
这是上下文的方法:
public static AutoPatientLookup InitializeTestPatientInfo(bool SSN = false, bool PatientNumber = false, bool Gender = false)
{
AutoPatientLookup TestAPIParameters = new AutoPatientLookup();
TestAPIParameters.FirstName = "First";
TestAPIParameters.LastName = "Last";
TestAPIParameters.DOB = "4/9/1953";
TestAPIParameters.PracticeID = 11071;
if (SSN)
{
TestAPIParameters.SSN = 000010281;
}
if (PatientNumber)
{
TestAPIParameters.PatientNumber = 458;
}
if (Gender)
{
TestAPIParameters.Gender = "F";
}
return TestAPIParameters;
}
Run Code Online (Sandbox Code Playgroud)
但是,有时我希望第二个或第三个布尔参数为true,但是我无法将其指定为我想要切换的参数,而不会为前面的参数明确说明true或false.
如果我想初始化一个AutoPatientLookup具有其性别属性值的对象,我将不得不这样调用它:
InitializeTestPatientInfo(false,false,true);
Run Code Online (Sandbox Code Playgroud)
我尝试了一些类似的东西
InitializeTestPatientInfo(Gender = true);
Run Code Online (Sandbox Code Playgroud)
和
InitializeTestPatientInfo(bool Gender = true);
Run Code Online (Sandbox Code Playgroud)
但似乎没什么用.是否有正确的语法来完成我正在尝试的内容?即使只有三个布尔参数,初始化语法也不是很不方便,如果有几十个,这可能更适用.
named-parameters ×10
c# ×4
c++ ×2
java ×2
spring ×2
.net ×1
coding-style ×1
function ×1
jdbctemplate ×1
oracle ×1
parameters ×1
spring-jdbc ×1
sql ×1
syntax ×1
vbscript ×1