是否可以为变量赋一个数学运算符.
这是我目前得到的,只是一个样本(现在打字,所以不要担心简单的错误)
if image == "lighten":
red_channel = red_channel + 50
else: // image is darken
red_channel = red_channel - 50
Run Code Online (Sandbox Code Playgroud)
请注意我是如何使用不同的运算符重复完全相同的代码.是否有可能实现这样的目标:
if (image == "lighten"):
operator = +
else:
operator = -
red_channel = red_channel operator 50
Run Code Online (Sandbox Code Playgroud) categoryCheck: {
for (String allowedCategory : allowedCategories) {
if (evt.getLoggerName().startsWith(allowedCategory)) {
break categoryCheck;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
有没有想法如何在不使用标签的情况下重写此代码并且不会大幅增加它?
我的函数中有一些参数接收并传递相同的值.我应该将所有参数变量命名为相同吗?
例:
// assume numMonth = 12
// assume numYear = 2000
int promptMonth(); // returns numMonth
int promptYear(); // returns numYear
int daysInMonth(int numMonth, int numYear); // numMonth and numYear will always
int daysInYear(int numYear); // be sent to these.
bool isLeapYear(int numYear); // daysInYear() and daysInMonth() call
// this function and send it numYear
// (which would be 2000 in this case).
Run Code Online (Sandbox Code Playgroud)
是否所有这些参数都被命名为相同,因为相同的值被传递给它们?
这是我现在拥有的init,
- (id)init
{
self = [super init];
if (self) {
self.url = [[NSURL alloc] init];
self.blurb = [[NSString alloc] init];
self.author = [[NSString alloc] init];
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
它什么也不做,但我有一个称为另一种方法initWithObject:将使用它的参数来填充实例变量url,blurb和author.我不知道我应该怎么做init.我应该抛出异常吗?我还有其他选择吗?
在Haskell(F#,Ocaml等)中,我可以这样做:
sign x | x > 0 = 1
| x == 0 = 0
| x < 0 = -1
Run Code Online (Sandbox Code Playgroud)
它计算给定整数的符号.
这可以简明扼要地表达某些逻辑流程; 我在Perl中遇到过其中一个流.
现在我正在做的是
sub frobnicator
{
my $frob = shift;
return "foo" if $frob eq "Foomaticator";
return "bar" if $frob eq "Barmaticator";
croak("Unable to frob legit value: $frob received");
}
Run Code Online (Sandbox Code Playgroud)
这让人感到无比和丑陋.
这段代码必须在Perl 5.8.8上运行,但我当然也对更现代的技术感兴趣.
这就是我需要做的.我有一个Tournament模型,它连接到Uservia Signup(N:N).
唯一Signup增加的是注册状态.比赛有一个开始时间,用户只能在比赛开始前60分钟进行注册.之后,注册用户可以办理登机手续.所以基本上我有两种选择
简而言之,模型看起来像这样
class Signup < ActiveRecord::Base
REGISTERED = 0
CHECKED = 1
belongs_to :tournament
belongs_to :user
end
class Tournament < ActiveRecord::Base
has_many :signups
has_many :users, :through => :signups
end
class User < ActiveRecord::Base
has_many :signups
has_many :tournaments, :through => :signups
end
Run Code Online (Sandbox Code Playgroud)
我跳过一些代码来保持这个简短.问题在于,因为我有很多条件要记住.这是我的实际代码(使用Slim作为模板引擎)
- if logged_in?
- if current_user.registered_for?(@tournament)
- if @tournament.starts_at < 60.minutes.from_now
p Signups are closed, only registered users can now check in
- if current_user.registered_for?(@tournament)
= button_to …Run Code Online (Sandbox Code Playgroud) 我注意到Eclipse会自动@author在新Java类的顶部添加一个带有我名字的标签.我也注意到,有可像其他标签@version,@link,@code,@value,@see...
是否只是形成了另一个"惯例",以便代码保持良好的记录?还是有其他目的吗?
我试图找到一个网站,可以更好地描述标签及其用法,但我没有运气.
假设我有一个非常复杂的缓冲区加扰函数,可以使用以下原型:
void do_something(char * thebuffer, int thelength);
Run Code Online (Sandbox Code Playgroud)
并且假设我需要让函数在std :: string上运行.但是std :: string.c_str()返回const char*,这是不可变的.
除了创建一个新的char*缓冲区,并将其传递给do_something之外,是否可以将do_something用于std :: string?
我的情况实际上是另一种方式(char*,int到std :: string和taking函数).
或者是绕过这个的唯一方法,就是去制作一个新的功能副本,它做同样的事情?(这真的不是很好的风格)
我有一组数字List<int>(例如):1,3,4,5,7,12,13,14,15,20,22,24,28,29,30
我希望将它们按顺序分组:
Sequence1 = from 1 amount 1 (1)
Sequence2 = from 3 amount 3 (3, 4, 5)
Sequence3 = from 7 amount 1 (7)
Sequence4 = from 12 amount 4 (12, 13, 14, 15)
Sequence5 = from 20 amount 1 (20)
Sequence6 = from 22 amount 1 (22)
Sequence7 = from 24 amount 1 (24)
Sequence8 = from 28 amount 3 (28, 29, 30)
Run Code Online (Sandbox Code Playgroud)
我知道如何使用for和检查每个数字.是否有更优雅的方式或算法,或一些sql/lambda命令可以帮助我?
当我编写代码时,我会尝试将所有内容划分为函数(方法,如果您愿意).函数X做东西X,Y做Tuff Y而不是方法X做东西X,Y和Z!这给了我更多可重用的代码.我喜欢.:)
让我们来看看这段代码:
var user = {
users: [],
userCount: 0,
addUser: function(user) {
(this.users).push(user);
},
incrementCount: function() {
++this.userCount;
}
}
var user = { // 2nd example.
users: [],
userCount: 0,
addUser: function(user) {
(this.users).push(user);
++this.userCount;
}
}
Run Code Online (Sandbox Code Playgroud)
(它是用JavaScript编写的,但这里的语言不是必需的.)
在我看来,第二个例子将更容易和更安全地使用,比方说,API用户.忘记打电话很容易user.incrementCount().你怎么看?第二个例子自动完成.
那么如何找到平衡点呢?关于在函数内调用函数的任何最佳实践?
感谢您阅读本文.
编辑:
我刚才想到了这个:
var user = {
users: [],
userCount: 0,
addUser: function(user) {
(this.users).push(user);
this.incrementCount();
},
incrementCount: function() {
++this.userCount;
}
}
Run Code Online (Sandbox Code Playgroud) coding-style ×10
c++ ×2
java ×2
c# ×1
cocoa-touch ×1
code-reuse ×1
eclipse ×1
javascript ×1
labels ×1
math ×1
objective-c ×1
oop ×1
perl ×1
python ×1
refactoring ×1
ruby ×1
sql ×1
tags ×1
view ×1