考虑:
char amessage[] = "now is the time";
char *pmessage = "now is the time";
Run Code Online (Sandbox Code Playgroud)
我从C编程语言第2版中读到,上述两个陈述没有做同样的事情.
我一直认为数组是一种操作指针来存储一些数据的便捷方式,但显然情况并非如此...... C中数组和指针之间的"非平凡"差异是什么?
我经常遇到这样的情况: -
try{
...
stmts
...
}
catch(Exception ex) {
...
stmts
...
} finally {
connection.close // throws an exception
}
Run Code Online (Sandbox Code Playgroud)
最后还需要一个try-catch块.
克服这个问题的最佳做法是什么?
查看bash(1)手册页中的"Array"部分,我没有找到切片数组的方法.
所以我想出了这个过于复杂的功能:
#!/bin/bash
# @brief: slice a bash array
# @arg1: output-name
# @arg2: input-name
# @args: seq args
# ----------------------------------------------
function slice() {
local output=$1
local input=$2
shift 2
local indexes=$(seq $*)
local -i i
local tmp=$(for i in $indexes
do echo "$(eval echo \"\${$input[$i]}\")"
done)
local IFS=$'\n'
eval $output="( \$tmp )"
}
Run Code Online (Sandbox Code Playgroud)
像这样使用:
$ A=( foo bar "a b c" 42 )
$ slice B A 1 2
$ echo "${B[0]}" # bar
$ echo "${B[1]}" # a …Run Code Online (Sandbox Code Playgroud) 在过去7年的大部分时间里,我一直在进行面向对象编程,在此期间使用Java打开和关闭.有些事情我确信我有很好的把握,比如最有用的设计模式.实际上,下面的代码允许我在一天的时间内创建一个小系统,它将处理我们现在准备实现的一个特定实例,同时具有足够的灵活性来处理我已经被告知的未来需求:
public void importAndArchive(File detectedFile) throws FileNotFoundException, IOException {
File workingCopy = returnWorkingCopy(detectedFile);
List<String[]> csvData = csvData(workingCopy);
setHeaderFields(csvData.get(0));
importData(csvData); //subclass will implement this abstract method
archiveWorkingCopy(workingCopy);
}
Run Code Online (Sandbox Code Playgroud)
我没有表现出上面的夸耀我对模板方法的掌握,而是作为一个起点来讨论我的能力中的差距,这是我的OO设计能力的明显.这种差距是异常处理的系统方法.事实上你可以在那个方法签名中看到我暂时重新抛出一些异常,但实际上我已经在应用程序的另一个角落里根除了同样的东西.
在我走得更远之前,由于这是我第一次特别系统化的尝试,我想对我到目前为止所做的事情进行一些验证.我们的应用程序循环遍历一堆文件,"处理"它们并"归档"它们.非常标准的票价.我为了尽快推出原型而做出的一个决定如下.应用程序根据(ResourceBundled)属性文件中的数据进行初始化.ResourceBundle API中的各种方法抛出未经检查的异常,但我暂时并没有真正处理它们,理由是它们会阻止应用程序启动,并且堆栈跟踪暂时就足够了.
但是我选择了一个用于CSV处理的库,它会抛出已检查的异常.然后,NetBeans很容易将这些异常扩散开始;)以下是我重新编写的一个实际处理这些异常的方法:
private String detectImportHandler(File detectedFile) throws Exception {
String[] firstLine = null;
try {
/*
* CSVReader throws checked exceptions
*/
CSVReader csvReader = new CSVReader(new FileReader(detectedFile));
firstLine = csvReader.readNext();
csvReader.close();
}
catch(Exception x) {
throw new Exception("CSVReader unable to process file: " + x.getMessage());
}
try {
return firstLine[1]; …Run Code Online (Sandbox Code Playgroud) 我在rails控制器动作中有下面的代码序列.在IF之前,params包含请求参数,如预期的那样.在它之后,params是零.有谁能解释这里发生了什么?
if false
params = {:user => {:name => "user", :comment => 'comment'}}
end
Run Code Online (Sandbox Code Playgroud)
谢谢.
我发现R的ifelse陈述不时很方便.例如:
ifelse(TRUE,1,2)
# [1] 1
ifelse(FALSE,1,2)
# [1] 2
Run Code Online (Sandbox Code Playgroud)
但是我对以下行为感到困惑.
ifelse(TRUE,c(1,2),c(3,4))
# [1] 1
ifelse(FALSE,c(1,2),c(3,4))
# [1] 3
Run Code Online (Sandbox Code Playgroud)
这是一个超出我的薪资水平的设计选择吗?
最近,我通过Crockford的JSLint运行了一些我的JavaScript代码,它给出了以下错误:
第1行问题1:缺少"使用严格"声明.
做一些搜索,我意识到有些人会加入"use strict";他们的JavaScript代码.一旦我添加了语句,错误就会停止显示.不幸的是,谷歌没有透露这个字符串声明背后的历史.当然它必须与浏览器如何解释JavaScript有关,但我不知道效果会是什么.
那么它是"use strict";什么,它意味着什么,它是否仍然相关?
当前的任何浏览器都会响应"use strict";字符串还是将来使用?
我是NHibernate和Fluent NHibernate的新手.
假设我有以下情况
Table Activities (uniquidentier ID, varchar ActivityName)
Table ActivityParameters(uniqueidentifier ID, varchar ParameterName,
varbinary(8000) ParameterValue)
Run Code Online (Sandbox Code Playgroud)
和下面的课程
public static Acivity
{
.......
public virtual Guid Id {get; private set;}
public virtual string ActivityName {get; private set;}
public virtual IDictionary<string, object> ActivityParameters {get; private set;}
}
Run Code Online (Sandbox Code Playgroud)
我该如何编写类图?更具体地说,我如何编写活动参数的映射?
如何使用这两种特殊的基本类型选择轻松/快速地替换浮点数(例如)以编译为两个不同的目标?
讨论:我有大量的c#代码正在开发中,我需要编译,或者根据目标程序集的用例使用float,double或小数.
使用像"类MYNumber:Double"这样的东西,只需要更改一行代码就行了,因为Double是密封的,显然C#中没有#define.使用#if #else语句来编写代码也不是一个选项,使用这些特定的基元类型支持数学运算符/相关代码太多了.
我对如何做这个看似简单的任务感到茫然,谢谢!
编辑:只是快速评论与凯莱回复中提到的拳击:不幸的是我需要避免拳击,主要是因为当需要最大速度时选择浮动,并且当最大准确度是优先级时的小数(并且取20x +性能命中是上可接受的).拳击可能会排除小数作为一个有效的选择,并在某种程度上打败目的.
编辑2:作为参考,那些建议将泛型作为这个问题的可能答案的人注意到有很多问题可以计算出泛型(至少对我们的需求而言).有关概述和进一步参考,请参阅使用泛型进行计算
是否存在使用句点而不是软件版本的任何其他分隔符的历史原因?
我们的产品之一是以前的3.5版本,现在它是3.08 - 我确信这是管理层说,一旦我们达到3.10,那么设置一个领先的零将使我们的客户更容易混淆.但作为软件开发人员,版本3.08对我来说很奇怪.
如果我们没有使用句点,版本3:9和3:10或3-9到3-10之间的差异会更明显,因为它不会被读作十进制数.此外,对于通常不熟悉软件版本控制的人来说,十进制数似乎意味着版本3.5已经到了下一个主要版本的一半,而实际上我们无法对下一个主要版本的次要版本数做出任何假设.
我知道现在我们通常使用句号作为约定,因为这是其他人正在做的事情 - 但是有没有理由在第一时间使用句号?
arrays ×2
java ×2
.net ×1
bash ×1
c ×1
c# ×1
compilation ×1
history ×1
if-statement ×1
javascript ×1
jslint ×1
notation ×1
pointers ×1
r ×1
r-faq ×1
replace ×1
ruby ×1
slice ×1
syntax ×1
use-strict ×1
versioning ×1