问题列表 - 第12676页

C:char指针和数组之间的差异

考虑:

char amessage[] = "now is the time";
char *pmessage = "now is the time";
Run Code Online (Sandbox Code Playgroud)

我从C编程语言第2版​​中读到,上述两个陈述没有做同样的事情.

我一直认为数组是一种操作指针来存储一些数据的便捷方式,但显然情况并非如此...... C中数组和指针之间的"非平凡"差异是什么?

c arrays pointers

135
推荐指数
5
解决办法
5万
查看次数

尝试捕获 - 最后再尝试捕获

我经常遇到这样的情况: -

try{ 
     ...
     stmts
     ...
} 
catch(Exception ex) {
     ... 
     stmts
     ... 
} finally {
     connection.close // throws an exception
}
Run Code Online (Sandbox Code Playgroud)

最后还需要一个try-catch块.

克服这个问题的最佳做法是什么?

java exception-handling try-catch-finally

31
推荐指数
3
解决办法
2万
查看次数

如何在Bash中对数组进行切片

查看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)

arrays bash slice

171
推荐指数
2
解决办法
10万
查看次数

批判我的异常处理策略

在过去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)

java exception-handling

2
推荐指数
2
解决办法
1005
查看次数

在rails中分配/替换params散列

我在rails控制器动作中有下面的代码序列.在IF之前,params包含请求参数,如预期的那样.在它之后,params是零.有谁能解释这里发生了什么?

if false
    params = {:user => {:name => "user", :comment => 'comment'}}
end
Run Code Online (Sandbox Code Playgroud)

谢谢.

ruby ruby-on-rails

5
推荐指数
1
解决办法
2648
查看次数

为什么R的ifelse语句不能返回向量?

我发现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)

这是一个超出我的薪资水平的设计选择吗?

if-statement r r-faq

105
推荐指数
5
解决办法
3万
查看次数

JavaScript中使用"严格"做什么,背后的原因是什么?

最近,我通过Crockford的JSLint运行了一些我的JavaScript代码,它给出了以下错误:

第1行问题1:缺少"使用严格"声明.

做一些搜索,我意识到有些人会加入"use strict";他们的JavaScript代码.一旦我添加了语句,错误就会停止显示.不幸的是,谷歌没有透露这个字符串声明背后的历史.当然它必须与浏览器如何解释JavaScript有关,但我不知道效果会是什么.

那么它是"use strict";什么,它意味着什么,它是否仍然相关?

当前的任何浏览器都会响应"use strict";字符串还是将来使用?

javascript syntax jslint use-strict

7339
推荐指数
29
解决办法
105万
查看次数

流畅的NHibernate映射

我是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)

我该如何编写类图?更具体地说,我如何编写活动参数​​的映射?

.net fluent-nhibernate

9
推荐指数
1
解决办法
6418
查看次数

如何在编译到不同的目标时暂时将一种原始类型替换为另一种原始类型?

如何使用这两种特殊的基本类型选择轻松/快速地替换浮点数(例如)以编译为两个不同的目标?

讨论:我有大量的c#代码正在开发中,我需要编译,或者根据目标程序集的用例使用float,double或小数.

使用像"类MYNumber:Double"这样的东西,只需要更改一行代码就行了,因为Double是密封的,显然C#中没有#define.使用#if #else语句来编写代码也不是一个选项,使用这些特定的基元类型支持数学运算符/相关代码太多了.

我对如何做这个看似简单的任务感到茫然,谢谢!

编辑:只是快速评论与凯莱回复中提到的拳击:不幸的是我需要避免拳击,主要是因为当需要最大速度时选择浮动,并且当最大准确度是优先级时的小数(并且取20x +性能命中是上可接受的).拳击可能会排除小数作为一个有效的选择,并在某种程度上打败目的.

编辑2:作为参考,那些建议将泛型作为这个问题的可能答案的人注意到有很多问题可以计算出泛型(至少对我们的需求而言).有关概述和进一步参考,请参阅使用泛型进行计算

c# replace compilation primitive-types c-preprocessor

5
推荐指数
1
解决办法
362
查看次数

在版本号中使用句点的历史原因?

是否存在使用句点而不是软件版本的任何其他分隔符的历史原因?

我们的产品之一是以前的3.5版本,现在它是3.08 - 我确信这是管理层说,一旦我们达到3.10,那么设置一个领先的零将使我们的客户更容易混淆.但作为软件开发人员,版本3.08对我来说很奇怪.

如果我们没有使用句点,版本3:9和3:10或3-9到3-10之间的差异会更明显,因为它不会被读作十进制数.此外,对于通常不熟悉软件版本控制的人来说,十进制数似乎意味着版本3.5已经到了下一个主要版本的一半,而实际上我们无法对下一个主要版本的次要版本数做出任何假设.

我知道现在我们通常使用句号作为约定,因为这是其他人正在做的事情 - 但是有没有理由在第一时间使用句号?

versioning history notation

15
推荐指数
4
解决办法
796
查看次数