我希望以一种良好的性能方式(我希望)将我的字符串中的命名参数替换为代码中的命名参数,例如,我的字符串:
"Hi {name}, do you like milk?"
Run Code Online (Sandbox Code Playgroud)
我怎么能用代码,正则表达式替换{name}?贵吗?你推荐哪种方式?
他们如何将示例NHibernates HQL替换为:my_param为用户定义的值?或者在我更喜欢的ASP.NET(MVC)路由中,"{controller}/{action}",new {controller ="Hello",...}?
我希望转换代码如:
var p = new Person("Ian", "Smith", 40, 16)
Run Code Online (Sandbox Code Playgroud)
至:
var p = new Person(surname: "Ian", givenName:"Smith", weight:40, age:16)
Run Code Online (Sandbox Code Playgroud)
作为使代码更具可读性的第一步,我愿意在必要时使用第三方重构工具.
(请不要告诉我使用参数对象和因子方法等,一旦我至少可以阅读代码,这些可能会在以后出现!)
我在ADO.NET中手动编写事务.我正在努力的例子重用了SqlCommand这个好主意.
但是,我在命令中添加了参数.
我的问题是:在下面的代码中,是否command.Parameters.Clear()正确?或者我做错了吗?
using (var connection = new SqlConnection(EomAppCommon.EomAppSettings.ConnStr))
{
connection.Open();
SqlTransaction transaction = connection.BeginTransaction();
SqlCommand command = connection.CreateCommand();
command.Transaction = transaction;
try
{
foreach (var itemIDs in this.SelectedItemIds)
{
command.CommandText = "UPDATE Item SET payment_method_id = @batchID WHERE id in (@itemIDs)";
// IS THE FOLLOWING CORRECT?
command.Parameters.Clear();
command.Parameters.Add(new SqlParameter("@batchID", batchID));
command.Parameters.Add(new SqlParameter("@itemIDs", itemIDs));
command.ExecuteNonQuery();
}
transaction.Commit();
}
catch (Exception ex)
{
MessageBox.Show("Failed to update payment batches, rolling back." + ex.Message);
try
{
transaction.Rollback();
}
catch …Run Code Online (Sandbox Code Playgroud) 我想动态设置实例方法的默认键参数。例如,与
class Module(object):
def __init__(self, **kargs):
set-default-key-args-of-method(self.run, kargs) # change run arguments
def run(self, **kargs):
print kargs
Run Code Online (Sandbox Code Playgroud)
我们会有:
m = Module(ans=42)
m.run.im_func.func_code.co_argcount # => 2
m.run.im_func.func_code.co_varnames # => ('self','ans','kargs')
m.run.im_func.func_defaults # => (42,)
m.run() # print {'ans':42}
Run Code Online (Sandbox Code Playgroud)
我尝试了一些带有 types.CodeType(我不太了解)的函数(不是方法)并让它工作(很好不会失败),但是添加的键参数没有显示在 kargs 中函数字典(它只打印 {})
必须仅对当前实例进行更改。实际上,我现在正在使用一个类(我认为我是 OO)所以我想用一个类方法来做它,但一个函数可能更好。就像是:
def wrapped_run(**kargs):
def run(**key_args):
print key_args
return wrap-the-run-function(run, kargs)
run = wrapped_run(ans=42)
run.func_code.co_argcount # => 1
run.func_code.co_varnames # => ('ans','key_args') ## keep the 'key_args' or not
run.func_defaults # => (42,)
run() # print {'ans':42} …Run Code Online (Sandbox Code Playgroud) 我有一个案例类,存储三个绑定参数.我想定义可以从任何两个参数构建类的伴随对象,看起来像下面的示例,这显然是不正确的:
def test(start : Float = end - duration, duration : Float = end - start, end : Float = start + duration) {
require( abs(start + duration - end) < epsilon )
...
}
val t1 = test(start = 0f, duration = 5f)
val t2 = test(end = 4f, duration = 3f)
val t3 = test(start = 3f, end = 5f)
Run Code Online (Sandbox Code Playgroud)
我可以用什么技巧来获得类似的用法语法?
是否有预先存在/ Scala-idiomatic /更好的方法来实现这一目标?
def sum(x: Int, y: Int) = x + y
var x = 10
x = applyOrBypass(target=x, optValueToApply=Some(22), sum)
x = applyOrBypass(target=x, optValueToApply=None, sum)
println(x) // will be 32
Run Code Online (Sandbox Code Playgroud)
我的applyOrBypass可以像这样定义:
def applyOrBypass[A, B](target: A, optValueToApply: Option[B], func: (A, B) => A) = {
optValueToApply map { valueToApply =>
func(target, valueToApply)
} getOrElse {
target
}
}
Run Code Online (Sandbox Code Playgroud)
基本上我想要应用操作,具体取决于是否定义了某些选项值.如果不是,我应该得到预先存在的价值.理想情况下,我想链接这些操作,而不必使用var.
我的直觉告诉我,折叠或减少会涉及到,但我不确定它是如何工作的.或者也许有另一种方法与monadic-fors ...
任何建议/提示赞赏!
monads coding-style scala optional-parameters named-parameters
我有一个方法,有4个参数,可以在块中使用.在每个块中,第一个参数始终相同:
// Block 1 - first parameter always "A"
foo(a="A", b="x", c="y", d="z")
foo(a="A", b=".", c=",", d="-")
foo(a="A", b="1", c="2", d="3")
// Block 2 - first parameter always "B"
foo(a="B", b="x", c="y", d="z")
foo(a="B", b=".", c=",", d="-")
foo(a="B", b="1", c="2", d="3")
Run Code Online (Sandbox Code Playgroud)
我想快速为每个块创建一个方法,这样我只需要指定其他3个参数.目前我可以这样做:
def fooCurried(a: String) = foo(a, _: String, _: String, _: String)
val fooA = fooCurreid("A")
fooA("x", "y", "z")
fooA(".", ",", "-")
fooA("1", "2", "3")
val fooB = fooCurried("B")
fooB("x", "y", "z")
fooB(".", ",", "-")
fooB("1", "2", "3")
Run Code Online (Sandbox Code Playgroud)
这种方法的问题是我丢失了我的命名参数.他们变得 …
我正在调用带有命名参数的存储过程。
exec MySP @name = 'binesh', @amount = @amt, @date = @date
Run Code Online (Sandbox Code Playgroud)
它对我来说很好用。
但是当我尝试
exec MySP2 @name = 'binesh', @amount = -@amt, @date = @date
Run Code Online (Sandbox Code Playgroud)
或者
exec MySP3 @name = 'binesh', @amount = @amt, @date = convert(varchar(25), @date, 131)
Run Code Online (Sandbox Code Playgroud)
我收到语法错误。
这是强制性的,我需要为每个变量创建单独的变量(常识告诉它不会这样)。那么它的语法是什么?
谢谢大家
比内什
t-sql database sql-server stored-procedures named-parameters
在 Swift 中,当你调用一个函数时,你需要标记参数,除非函数的作者明确允许你不要这样做。在语言设计方面是否有原因?我一直认为参数标签是一种允许调用者以任何对他们有意义的方式对参数进行排序的好方法,但这种方式感觉就像很多无意义/无用的样板。
例子:
如果我们这样定义 makeDog 函数:
makeDog(legs: int, name: String)->Dog{}
Run Code Online (Sandbox Code Playgroud)
那么它必须像这样调用:
makeDog(legs: 4, name: "fido")
Run Code Online (Sandbox Code Playgroud)
并且不能这样调用(编译器错误):
makeDog(name: "fido", legs: 4)
Run Code Online (Sandbox Code Playgroud)
写后笔记:即使是命名参数的 StackOverflow 标签描述也说:
命名参数使您能够通过将参数与参数名称而不是参数在参数列表中的位置相关联来为特定参数指定参数。
如果我required从命名参数中删除,它会给我一个错误:
参数 'color' // 因其类型而不能具有值 'null',但隐式默认值为 'null'。
它们之间有什么区别,我们什么时候需要使用它们?
class RoundedButton extends StatelessWidget {
late final Color color;
final String title;
final VoidCallback? onPressedInput;
RoundedButton(
{required this.color,
required this.title,
@required this.onPressedInput});
@override
Widget build(BuildContext context) {
return Padding(
padding: EdgeInsets.symmetric(vertical: 16.0),
child: Material(
color: color,
borderRadius: BorderRadius.circular(30.0),
elevation: 5.0,
child: MaterialButton(
onPressed: onPressedInput,
minWidth: 200.0,
height: 42.0,
child: Text(
title,
),
),
),
);
}
}
Run Code Online (Sandbox Code Playgroud) named-parameters ×10
c# ×3
scala ×3
ado.net ×1
c#-4.0 ×1
coding-style ×1
currying ×1
dart ×1
database ×1
dynamic ×1
flutter ×1
methods ×1
monads ×1
performance ×1
python ×1
refactoring ×1
regex ×1
required ×1
sql-server ×1
string ×1
swift ×1
t-sql ×1
transactions ×1