我看到很多关于currying技术的文档和问题,但是我发现很少有关于为什么会在实践中使用它的信息.我的问题是,currying有什么好处?也许你可以提供一个简单的例子,其中currying比传统的方法调用更可取.
太阳升起的时候我用C++工作,所以到目前为止,除了工作以外的语言修补外,我几乎没有接触过curry.
在Visual Studio(C#)中设计应用程序时,如果我知道我将拥有一定数量的DataGridViews,它们都具有相同的属性(如宽度,高度,颜色,其他一些属性,如:禁用直接编辑行的选项等)是否可以创建我自己的类("myDataGridView")继承DataGridView类并在那里进行所有调整,然后在代码中稍后实例化该类?像这样:
//my class:
class myDataGridView : DataGridView
{
this.BorderStyle = <someValue>
this.ColumnCount = <someValue>
//etc.
public void method1()
{
//some code...
}
public void method2()
{
//some code...
}
}
//instantiate it somewhere:
myDataGridView dgv1 = new myDataGridView();
myDataGridView dgv2 = new myDataGridView();
myDataGridView dgv3 = new myDataGridView();
Run Code Online (Sandbox Code Playgroud)
OO原则是否可以?我的朋友说把代码放进去了
this.BorderStyle = <someValue>
Run Code Online (Sandbox Code Playgroud)
在myDataGridView类中是不好的做法,因为如果你知道我的意思,调整像这样的属性会溢出dataGridView的属性,其他开发人员可能会在Visual Studio中直观调整.那有关系吗?我的意思是,如果我想将我的DataGridView视为一个对象,那么它可以具有其属性和行为,对吧?并且在我的类中使用调整DataGridView属性的代码是可以的,可读的,并且每个想要更改某些属性的开发人员都可以在myDataGridView类中更改它.这种做法是坏还是错?如果是,当您知道您的应用程序将具有许多具有相同属性/行为的DataGridView时,最佳做法是什么?谢谢.
如果不计算元素IEnumerables<T>
集合中的所有struct
元素,检测它是否为空的最佳方法是什么?
例如,在class
我通常用first或default测试的元素上:
myEnumerableReferenceTypeElements.FirstOrDefault() == null
Run Code Online (Sandbox Code Playgroud)
因为null通常不是正在迭代的集合中的有效值.
但是,对于所有值必须在预定义范围内的值类型,默认值(例如int default 0)也是集合中的可行项.
myValueTypeInt32Elements.FirstOrDefault() == 0 // can't tell if empty for sure
Run Code Online (Sandbox Code Playgroud) 我有一个字符串排列的方式匹配格式yyyy-dd-MM HH:mm:ss它可能看起来像这样 2010-20-12 13:30:00
我需要将它插入SQL Server中的smalldatetime列.该列的格式为yyyy-MM-dd HH:mm:ss
我需要字符串看起来像这样2010-12-20 13:30:00
,否则SQL Server会让月份和日期混淆.
谢谢你的想法
我一直在尝试使用构建事件来启动和停止在我的项目中构建的Windows服务.然而,对于前置和后置构建失败,错误级别为255.我已经尝试使用预构建来捕获它而没有运气.
预建
if "$(ConfigurationName)" == "Debug"
(
net stop myService
if errorlevel 2
if errorlevel 255
:exit
:exit
)
Run Code Online (Sandbox Code Playgroud)
生成后
if "$(ConfigurationName)" == "Release"
(
copy $(TargetDir) C:\Media\Bin\$(ProjectName)
if errorlevel 1 BuildEventFailed
:BuildEventFailed
mkdir C:\Media\Bin\$(ProjectName)
copy $(TargetDir) C:\Media\Bin\$(ProjectName)
)
else if "$(ConfigurationName)" == "Debug"
(
net start myService
)
Run Code Online (Sandbox Code Playgroud) 我想格式化一个整数i(-100 < i < 100
),这样:
-99格式为"-99"
9格式为"+09"
-1格式为"-01"
0格式为"+00"
i.ToString("00")
Run Code Online (Sandbox Code Playgroud)
是接近但是当int为正时不添加+号.
有没有办法做到这一点,没有明确区分
i >= 0
和i < 0
?
请注意,我使用的是谷歌应用帐户,而不是Gmail帐户.我正在尝试使用我的谷歌应用程序帐户使用PHP发送电子邮件.我可以使用端口587主机smtp.googlemail.com和启用SSL在.net应用程序中发送电子邮件.用户名是我的完整电子邮件地址.
require_once('PHPMailer_v5.1\class.phpmailer.php');
try {
$mail = new PHPMailer();
$mail->Mailer = 'smtp';
$mail->SMTPSecure = 'tls';
$mail->Host = $host;
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->Username = $from;
$mail->Password = $password;
$mail->AddAddress($to, $to_name);
$mail->From = $from;
$mail->FromName = $from_name;
$mail->Subject = $subject;
$mail->MsgHTML($body);
$mail->IsHTML(true);
$mail->Send();
} catch (phpmailerException $e) {
echo $e->errorMessage();
} catch (Exception $e) {
echo $e->getMessage();
}
Run Code Online (Sandbox Code Playgroud)
无法让这个工作,但我尝试了几种不同的变化.
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
// Error: Could not connect to SMTP host. This is expected as this isn't supported …
Run Code Online (Sandbox Code Playgroud) 我有这个脚本
#!/usr/bin/perl
use strict;
use warnings;
use yy;
my $data = [
["aax", "ert", "ddd"],
["asx", "eer", "kkk"],
["xkk", "fff", "lll"],
["xxj", "vtt", "lle"],
];
use Test::More tests => 4;
is(yy::type1_to_type2(\$data, 'aax'), 'ert');
is(yy::type1_to_type3(\$data, 'asx'), 'kkk');
is(yy::type2_to_type3(\$data, 'fff'), 'lll');
is(yy::type3_to_type1(\$data, 'lle'), 'xxj');
Run Code Online (Sandbox Code Playgroud)
它使用这个模块
package yy;
sub typeX_to_typeY {
my ($x, $y, $data, $str) = @_;
foreach (@$data) {
if ($_->[$x - 1] eq $str) {
return $_->[$y - 1];
}
}
return;
}
sub type1_to_type2 { typeX_to_typeY(1, 2, @_) } …
Run Code Online (Sandbox Code Playgroud) 我是Java新手,通常使用PHP.
我想转换这个字符串:
2011年3月14日星期四16:02:37 GMT
进入一个Calendar对象,这样我就可以像这样轻松地拉出Year和Month:
String yearAndMonth = cal.get(Calendar.YEAR)+cal.get(Calendar.MONTH);
Run Code Online (Sandbox Code Playgroud)
手动解析是不是一个坏主意?使用子字符串方法?
任何建议都会有所帮助!
我想根据不同属性的几个标准选择产品.
我知道如何使用 $collection->addAttributeToFilter('someattribute', array('like' => '%'));
但是我想对OR条件使用几个属性.
喜欢:
$collection->addAttributeToFilter('someattribute', array('like' => 'value'));`
Run Code Online (Sandbox Code Playgroud)
要么
$collection->addAttributeToFilter('otherattribute', array('like' => 'value'));`
Run Code Online (Sandbox Code Playgroud)
获得"某些属性" 或 "分配"设置为"价值"的产品
可能吗?