小编oct*_*bus的帖子

何时使用已定义

我对测试参数的方式感到有点困惑.以下是从下面发布的源代码中的两个示例.首先是这个

if(!defined($DBHdl) || !defined($acct_no));

测试未定义参数的方法?

其次,在分配hashref之后

$ptMtrRecRef = $ptSelHdl->fetchrow_hashref;

是测试$ptMtrRecRef被定义使用的最佳方式

if(!$ptMtrRecRef)

要么

if(!defined($ptMtrRecRef))

###############################################################################
#  Returns count of meters per account number.

# $PkNam  -- package name discarded
# $DBHdl -- ICS database handle
# $acct_no -- water account number

sub mgbl_get_meter_count
{
    my ($PkNam, $DBHdl, $acct_no) = @_;

    die("mgbl_get_meter_count passed undef handles.\n")
        if(!defined($DBHdl) || !defined($acct_no));

    my $ptSelHdl;
    my $ptMtrRecRef;

    my $sql_statement = 
     "select count(*) from meter m where m.acct_no = ".$acct_no.";";

    $ptSelHdl = $DBHdl->prepare($sql_statement);

    die("Cannot prepare …
Run Code Online (Sandbox Code Playgroud)

perl

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

F#:[0;有什么区别?1; 2; 3; 4; 5]和[0,1,2,3,4,5]?

我知道如何制作清单:

let f n = 
    let out_listA = [ 0 .. (n - 1) ]
    let out_list =
        out_listA |> List.reduce (fun state item -> state + ", " + item) 
    out_list
Run Code Online (Sandbox Code Playgroud)

我正在进行在线练习,涉及打印如下所示的内容n = 5.

[0, 1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

代替

[0; 1; 2; 3; 4; 5]
Run Code Online (Sandbox Code Playgroud)

从Web上查看,逗号分隔的输出似乎是转换为字符串的列表.

那么,我的问题是[0, 1, 2, 3, 4, 5],当用从分号分隔的列表转换为用逗号分隔时,代表什么以及实际发生了什么呢?

结语:

Fyodor Soikin的评论是正确的; 我很困惑.

事实证明,以逗号分隔的列表是一个设计,用于打印出以分号分隔的列表作为数组括号内的逗号分隔列表.

以下解决方案来自github上的ehotinger:

open System

[<EntryPoint>]

let main argv = 
    let s = Console.ReadLine() |> int …
Run Code Online (Sandbox Code Playgroud)

f# list

3
推荐指数
1
解决办法
104
查看次数

为什么Seq.tail不是一个选择

我的问题是什么时候输入Seq.为什么没有Seq.tail功能?

在这个不将序列转换为列表的代码Seq.tail中,递归函数中没有可用的函数.是因为Seq.initInfinte用于创建序列,还是有其他原因?

open System
let readList() =
    Seq.initInfinite (fun _ -> Console.ReadLine())
    |> Seq.takeWhile (fun s -> (s <> ""))
    |> Seq.map (fun x -> Int32.Parse(x))

let rec listLen list1 acc =
    if Seq.isEmpty list1 then
        acc
    else
        (* There is no Seq.tail available. Compile error. *)
        listLen (Seq.tail list1) (acc + 1)

[<EntryPoint>]
let main argv = 
    let inList = (readList())
    let inListLen = listLen inList 0
    printfn "%A"  inListLen

    0 …
Run Code Online (Sandbox Code Playgroud)

f# list seq visual-studio-2015

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

servlet中缺少隐式对象

为什么Java Server Pages(jsp)有隐式对象,但java servlet却没有?

jsp

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

复杂Python参数传递要求的解决方案是什么?

我正在寻找以下复杂参数传递问题的解决方案:

我想使用Python将函数列表及其参数作为参数传递给另一个函数.我知道可以将函数作为参数传递,但是可以在python中传递函数列表及其参数吗?

我的示例代码:

self.myObject = Column(self.orderedColumnDictionary, \ 
   fillingOutMethods = [[firstFillingOutMethod, parameter1], \
   [anotherFillOutMethod, parameter2, parameter3]])
Run Code Online (Sandbox Code Playgroud)

在这段代码中,我正在初始化一个类Column的对象.所以在创建对象时,我希望将各种函数作为参数传递.我正在考虑将此对象所需的所有函数作为lits传递.例如,在这个示例代码中,我的函数是firstFillingOutMethod,其中我将parameter1作为参数传递,而另一个函数是anotherFillOutMethod,其中我想传递parameter2和parameter3作为参数.

因此,我期待任何有关执行此类任务的建议.

谢谢

python parameter-passing

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

如何创建和调用指向函数的指针

嗨,我是初学者,我正在尝试找出一些指向函数示例的指针.我甚至无法编译我的代码,它显示以下消息.我无法确定为什么我收到编译错误.

/tmp/cc0qghbo.o: In function `main':
pointer_to_function_inside_structure.c:(.text+0x88): undefined reference to `func_ptr'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

这是我的代码,请告诉我我做错了什么

#include<stdio.h>
#include<stdlib.h>

struct student_data
{
        char *name;
        int roll_num;
        int marks;
        void (* func_ptr)(struct student_data *ptr);
};

void print_data(struct student_data *ptr);

void print_data(struct student_data *ptr)
{
        printf("\nNAME OF THE STUDENT      %s", ptr -> name);
        printf("\nROLL NUMBER OF STUDENT   %d", ptr -> roll_num);
        printf("\nMARKS OF STUDENT         %d\n", ptr -> marks);
}

int main()
{
        struct student_data *ptr;

        ptr -> name = "ajish";
        ptr -> …
Run Code Online (Sandbox Code Playgroud)

c function-pointers function

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

为什么这个C代码不能创建一个具有读写用户,组和其他权限的文件?

为什么以下代码不会创建具有用户,组和其他权限读写权限的文件?

   char data[10] = "123456789";
   int fh = open("test.txt", O_RDWR|O_CREAT, 0666);
   write(fh, data, 10);
   printf(strerror(errno));
   close(fh);
Run Code Online (Sandbox Code Playgroud)

生成此文件:

-rw-r--r-- 1 pc users       9 Nov 15 16:15 test.txt
Run Code Online (Sandbox Code Playgroud)

那是什么意思?我特别要求所有类别的r + w.

c linux

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

为什么Clojure defmulti dispatch函数接收0参数?

开始编辑:

Mea Culpa!我道歉.

我在Clojure 1.2.1的蛋糕代表中运行它,它老实说不起作用.现在它退出蛋糕repl和蛋糕编译后,它也在1.3.0工作.

结束编辑:

在下面:我的调度函数正在传递零args,但我无法弄清楚为什么.我已经测试了调度功能,它完成了应有的功能.我将不胜感激任何建议.

(defrecord AcctInfo [acct-type int-val cur-bal])
(def acct-info (AcctInfo. \C 0.02 100.00))
ba1-app=> acct-info
ba1_app.AcctInfo{:acct-type \C, :int-val 0.02, :cur-bal 100.0}

(defn get-int-calc-tag [acct-type]
    (cond   (= acct-type \C) :checking
            (= acct-type \S) :savings
            (= acct-type \M) :moneym
            :else            :unknown))

(defmulti calc-int (fn [acct-info] (get-int-calc-tag (:acct-type acct-info))))

(defmethod calc-int :checking [acct-info] (* (:cur-bal acct-info) (:int-val acct-info)))

ba1-app=> (get-int-calc-tag (:acct-type acct-info))
:checking

ba1-app=> (calc-int acct-info)
java.lang.IllegalArgumentException: Wrong number of args (0) passed to: ba1-app$get-int-calc-tag
Run Code Online (Sandbox Code Playgroud)

clojure

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

如何启动两个线程并等待它们

我可以启动两个线程,但它们可以同步工作.为了让这些线程独立发布,我缺少什么?

主,线程和输出

(defn -main 
    [& args]
    (do
        (let [grid-dim-in [0 5]
              mr1-pos     [\N 2 4]
              mr2-pos     [\N 1 5]
              mr1-movs    "LMLMMRMM"
              mr2-movs    "RMRMMMLM"]

            (reset! grid-dim grid-dim-in)
            (reset! mr1-id {:mr1 mr1-pos})
            (reset! mr2-id {:mr2 mr2-pos})

            (.start (Thread. (rover-thread mr1-id mr1-movs update-work-block)))
            (.start (Thread. (rover-thread mr2-id mr2-movs update-work-block))))))

(defn rover-thread [id movs update-ref]
    (let [id-key (keys @id)
          id-vals (vals @id)]
        (doseq [mov movs]
           (println "Rover " id-key " is moving ")
           (let [new-mov (determine-rover-move (first id-vals) mov)]
               (move-rover id new-mov update-ref)
               (print …
Run Code Online (Sandbox Code Playgroud)

clojure

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

为什么我会收到不兼容的指针类型错误?

我研究了C指针,并想知道为什么编译器在以下代码中发出不兼容的指针类型错误:

#include <stdio.h>


const char *months(int n);
int main() {
    char **p = months(2);

    printf("%s", **p);
}

const char *months(int n) {
  const char *m[] = {
        "Invalid month",
        "January",
        "February",
        "March",
        "Aprli"
    };
    return (n == 0 || n > 12) ? m[0] : m[n];
}
Run Code Online (Sandbox Code Playgroud)

我希望printf在月份显示"二月",但是在编译过程中我得到了错误"不兼容的指针类型初始化'char**',表达式为'const char*'".

如果没有错误,月份函数返回指针指向"n"个月.接下来,我创建一个指针p来指向月份函数的结果.

这有什么不对?

c

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