我正在尝试自学Perl,我到处寻找可能是一个非常简单的问题的答案.我已经定义了一个子程序,我调用它来计算单词中的字母数.如果我这样写出来:
$sentence="This is a short sentence.";
@words = split(/\s+/, $sentence);
foreach $element (@words) {
$lngths .= length($element) . "\n";
}
print "$lngths\n";
Run Code Online (Sandbox Code Playgroud)
然后它就像一个魅力.但是,如果我将其包装到子例程中,则拆分不会拆分输入,而是将整个句子计为单个输入.这是我如何定义子程序:
sub countWords {
@words = split(/\s+/, @_);
foreach $element(@words) {
$lngths .= length($element) . "\n";
}
return $lngths;
}
Run Code Online (Sandbox Code Playgroud)
从我阅读过的所有页面和我所咨询过的文本中,这应该可行,但事实并非如此.
提前致谢!
我想使用类似的东西:
git checkout -- <path>/<file>
Run Code Online (Sandbox Code Playgroud)
但我想将文件签出到我选择的某个文件夹,而不是覆盖本地/.
任何的想法?
我有一个像这样的变量:
const std::string& iterations = "30";
Run Code Online (Sandbox Code Playgroud)
我想用它来确定"for"循环的迭代次数:
for ( int i = 0; i < iterations; i++ ) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
怎么做?我知道我可以像这样强制转换为字符串:
iterations.c_str();
Run Code Online (Sandbox Code Playgroud)
所以我尝试了c_int()但它不起作用:
iterations.c_int();
Run Code Online (Sandbox Code Playgroud) 在Objective-C中,您不能声明最后一个组件不带参数的方法名称.例如,以下是非法的.
-(void)take:(id)theMoney andRun;
-(void)take:(id)yourMedicine andDontComplain;
Run Code Online (Sandbox Code Playgroud)
为什么Objective-C是这样设计的?它只是Smalltalk的神器,没有人看到需要摆脱?
这种限制在Smalltalk中是有意义的,因为Smalltalk没有围绕消息调用的分隔符,因此最终组件将被解释为到最后一个参数的一元消息.例如,BillyAndBobby take:'$100' andRun
将被解析为BillyAndBobby take:('$100' andRun)
.这在Objective-C中无关紧要,其中需要使用方括号.
支持无参数选择器组件在测量语言的所有常用方式中都不会获得太多,因为程序员选择的方法名称(例如,runWith:
而不是take:andRun
)不影响程序的功能语义,也不影响语言的表达性.实际上,具有无参数组件的程序与没有参数的组件相当.因此,我对那些没有必要说明这样一个特征的答案不感兴趣(除非那是Objective-C设计师所说的原因;有没有人碰巧知道Brad Cox或Tom Love?他们在这里吗?)或者说如何编写方法名称,以便不需要该功能.主要的好处是可读性和可写性(这就像可读性,只有......你知道),因为这意味着你可以编写更接近自然语言句子的方法名称.这样的人-(BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication*)theApplication
(马特·加拉格尔指出的"可可的爱"可以被命名为当您拖动一个形式参数是有点混乱)-(BOOL)application:(NSApplication*)theApplication shouldTerminateAfterLastWindowClosed
,从而将参数紧邻适当的名词.
Apple的Objective-C运行时(例如)完全能够处理这些选择器,那么编译器为什么不呢?为什么不在方法名称中支持它们呢?
#import <Foundation/Foundation.h>
#import <objc/runtime.h>
@interface Potrzebie : NSObject
-(void)take:(id)thing;
@end
@implementation Potrzebie
+(void)initialize {
SEL take_andRun = NSSelectorFromString(@"take:andRun");
IMP take_ = class_getMethodImplementation(self, @selector(take:));
if (take_) {
if (NO == class_addMethod(self, take_andRun, take_, "@@:@")) {
NSLog(@"Couldn't add selector '%@' to class %s.",
NSStringFromSelector(take_andRun),
class_getName(self));
}
} else {
NSLog(@"Couldn't find method …
Run Code Online (Sandbox Code Playgroud) 这是一个例子:
#!/bin/bash
echo -e "Enter IP address: \c"
read
echo $REPLY
Run Code Online (Sandbox Code Playgroud)
但我想让用户更容易回答.我想为用户提供答案.它应该看起来像这样:
输入您的IP:192.168.0.4
并且用户只需按Enter键即可同意192.168.0.4,或者可以删除一些字符(例如,删除"4",一个退格键并输入3).
如何做出这样的输入?bash有可能吗?
我有一个Java Web应用程序,它在会话中存储一些数据.当用户与应用程序交互时,会话中的数据发生变化(例如,流程由控制器管理,每个控制器具有多个表单页面,在每个表单页面上,一些数据在会话中更新,流程转到下一个表单页面).
问题是一些用户向应用程序打开了多个选项卡,每个选项卡在流程中都有不同的步骤.此时会话中的数据混乱,因为选项卡共享同一会话(应用程序使用cookie托管会话).
告诉用户使用不同的浏览器以避免共享相同的会话ID(例如,一个Firefox窗口和一个IE窗口)不是一种选择,因为在某些时候肯定会有人忘记这样做而是使用制表符,从而弄乱他们的数据.
添加一些检测从另一个选项卡请求另一个流并向用户显示不允许这样的消息的验证不是一个选项,因为它对用户很生气,我们不希望这样做吗?:d
事实是,使用另一个选项卡对用户很有用,因为它们在使用应用程序时更有效,所以我保留了这个选项.但现在的问题是如何最好地管理更多标签的一个会话数据?
我想到的是让控制器在启动流时生成一个令牌,并将此令牌传递给每个表单页面,然后将其发送回标识自身.如果另一个选项卡在存在正在进行的流时请求相同的控制器操作,则生成另一个标记并将其传递.
基本上,我希望每个流都有一个令牌,在会话中我不仅会保留一组数据,而是为每个令牌提供一组数据,然后根据令牌匹配请求.
现在的问题是这种方法需要对应用程序进行大量的重写,我想知道是否存在管理这种情况的最佳实践,或者是否有人建议其他方法.我对这些想法持开放态度.
你遇到过这种情况吗?你是怎么处理的呢?
我正在使用Maven Eclipse插件来为我的项目添加依赖项.设置依赖项后,我右键单击了我的项目,选择了Maven-> Download Sources(和JavaDoc),但它们并没有自动附加到依赖项的类.源代码和JavaDoc文件存储在哪里?
注意:这是我使用Maven的第一天,所以我对下载源的理解可能还有很长的路要走.
将int除以零将抛出异常,但浮点数不会 - 至少在Java中.为什么浮点数有额外的NaN信息,而int类型没有?