小编XXI*_*XIV的帖子

如何在Perl中的getter方法中返回两个值?

use strict;
use warnings;

package LineSegment;

sub new
{       
        my $class = shift; 
        my ($ax, $ay, $bx, $by) = @_;
        my $self = {"ax"=>$ax,
                    "ay"=>$ay,
                    "bx"=>$bx,
                    "by"=>$by,
                   }; 
        bless ($self, $class);
        return $self;
}
sub getA{
        #Issue on get A
        my $self = shift;
        return ($self->{ax}, $self->{ay});
}
sub getB{
        #Issue on get B
        my $self = @_;
        return ($self->{bx}, $self->{by});
}
sub setA{
        #Can print correct value. Is the return statement where it goes wrong?
        my($self, $ax, $ay) = …
Run Code Online (Sandbox Code Playgroud)

perl

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

如何从 JDBC 中的存储过程获取输出

我正在尝试使用 JDBC 并且制作了一个存储过程。我想调用存储过程,然后使用Java中的输出数据System.out.println。我怎么做?

下面是我原来的存储过程。我想让这个工作,但从阅读中我不知道这是否可能

DELIMITER $$
            CREATE
            PROCEDURE CountMembers()
            BEGIN
            SELECT COUNT(MEMBER_ID) FROM Members;
            END $$
    DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

这是我将其更改为的内容,因为它似乎得到了输出,这可能是必须要做的。

DELIMITER $$
        CREATE
        PROCEDURE CountMembers(OUT m_count VARCHAR(30))
        BEGIN
        SELECT COUNT(MEMBER_ID) INTO m_count FROM Members;
        END $$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

我知道要运行它,我必须创建一个可调用的语句,然后我知道在哪里String userCount = callableStatement.getString(1);可以获得输出。基本上我已经阅读了很多信息,但我很难将它们整合在一起。

java mysql stored-procedures jdbc

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

使用未定义副作用的角度轨迹函数

我的一个组件中存在更改检测运行过于频繁的问题,因此我尝试使用该指令trackBy的选项ngFor

通过阅读,我了解到 Angular 将在下次运行更改检测时使用从函数返回的值作为trackyBydiff。为了看看它是否符合我的需求,并尝试更好地理解它,我建立了一个游乐场。使用的时候我把trackyBy我用的函数的返回值设置为return undefined,结果还是得到了我想要的结果。

TS:

import { Component } from '@angular/core';

@Component({
  selector: 'my-app',
  styleUrls: ['./app.component.scss'],
  templateUrl: './app.component.html',
})
export class AppComponent {
collection;
  constructor() {
    this.collection = [{id: 1, value: 0}, {id: 2, value: 0}, {id: 3, value: 0}];
  }

  getItems() {
    this.collection = this.getItemsFromServer();
  }

  getItemsFromServer() {
    return [{id: 5, value: 0}, {id: 2, value: 0}, {id: 3, value: 3}, {id: 4, value: 4}];
  }

  trackByFn(index, item) {
    return …
Run Code Online (Sandbox Code Playgroud)

typescript ngfor angular

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

为什么 setTimeout 是同步执行的?

setTimeout下面是同步代码之后执行的例子

console.log('hello');
setTimeout(() => console.log('timeout'), 0);
console.log('end');
Run Code Online (Sandbox Code Playgroud)

控制台输出:hello end timeout

异步:

function asyncForEach(array, callBack) {
    array.forEach(x => setTimeout(callBack(x), 0));
}
asyncForEach([1,2,3,4], (i) => console.log(i)); 
console.log('end');
Run Code Online (Sandbox Code Playgroud)

控制台输出:

1
2
3
4
end
Run Code Online (Sandbox Code Playgroud)

同步:

[1,2,3,4].forEach(x => console.log(x));
console.log('end');
Run Code Online (Sandbox Code Playgroud)

控制台输出:

1
2
3
4
end
Run Code Online (Sandbox Code Playgroud)

我试图更好地理解event looptask queue,并且在观看了一个很好的推荐视频(https://www.youtube.com/watch?v=8aGhZQkoFbQ)后,遇到了以下半声明:“回调可以是同步和异步的”。演讲者继续演示同步方式如何最终不会通过task queue,因此不会通过event loop,因此所有内容都保留在stack. 但是,异步方式会导致task queue用 的最终返回填充setTimeout callback,这将使任何同步的下面代码可执行,因为event loop必须等待一个空stack来插入返回的callback.

运行上面的代码时(我从他那里偷来的东西也编辑过,所以这可能是我的错误添加),异步方式产生与同步方式相同的结果。

有人可以帮助解释为什么异步方式不作为第一个setTimeout示例和/或提供解释如何不将常规回调(例如数组帮助程序方法)插入task …

javascript event-loop task-queue

0
推荐指数
1
解决办法
100
查看次数