小编Pie*_*aud的帖子

如何返回只有一个字段的命名元组

我用 c# 编写了一个函数,它最初返回一个命名元组。但是现在,我只需要这个元组的一个字段,我想保留这个名称,因为它有助于我理解我的代码。

private static (bool informationAboutTheExecution, bool field2thatIdontNeedAnymore) doSomething() {
        // do something
        return (true, false);
    }
Run Code Online (Sandbox Code Playgroud)

这个函数编译。但这是我想要的以下功能

private static (bool informationAboutTheExecution) doSomething() {
        // do something
        return (true);
    }
Run Code Online (Sandbox Code Playgroud)

错误信息:

元组必须至少包含两个元素

不能隐式转换类型 'bool' 到 '(informationAboutTheExecution,?)

有人有保留返回值名称的解决方案吗?

c#

10
推荐指数
3
解决办法
865
查看次数

nix 重建开关导致“/tmp/.X11-unix 的 fchmod() 失败:只读文件系统”

我从头开始在 WSL 上重新启动安装:

 wsl --unregister Nixos
 wsl --import NixOS .\NixOS\ nixos-wsl-installer.tar.gz --version 2
 wsl -s Nixos
 wsl
Run Code Online (Sandbox Code Playgroud)

nixos-wsl-installer.tar.gz 来自 https://github.com/nix-community/NixOS-WSL/releases/tag/22.05-5c211b47

安装完成。尼克斯开始了

我还没有更改 /etc/nixos/configuration.nix 中的任何内容

  sudo nixos-rebuild switch
Run Code Online (Sandbox Code Playgroud)

/tmp/.X11-unix 的 fchmod() 失败:只读文件系统

这是什么意思?

nixos nix

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

如何在“流水线表函数”、视图和显式光标之间进行选择

我先说我认为我已经理解的内容。

使用显式游标是因为我们稍后需要重用查询。如果使用非显式游标(即 for cs in (select .........)),则每次使用游标时都会重新执行请求。因此,显式游标用于提高效率。

为了分解代码,我们可以使用“流水线表函数”或“视图”来创建游标。我想知道为什么我应该使用一种解决方案而不是另一种解决方案。

以下是我对这些解决方案的了解:

不赞成也不反对

我可以使用 select 语句提取视图或流水线表函数函数的一部分。

骗局

必须声明“流水线表”使用的记录类型和表类型。这需要时间

pro:我们可以在管道表(例如循环)中使用 pl/sql 语句的所有可能性

我说的都是真的吗?还有其他我应该知道的事情吗?

oracle plsql

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

如何在nixos中使用postgresql

我已经安装了 PostgreSQL:

  nix-env -iA nixos.postgresql
Run Code Online (Sandbox Code Playgroud)

现在当我使用 时psql,我得到:

psql: error: connection to server on socket "/run/postgresql/.s.PGSQL.5432" failed: No such file or directory
    Is the server running locally and accepting connections on that socket?
Run Code Online (Sandbox Code Playgroud)

我必须添加一些东西/etc/nixos/configuration.nix吗?

更新

我尝试像此链接那样进行操作(即,将其安装在nix-shell而不是安装在中nix-env),但我仍然遇到相同的错误:

$ nix-shell --pure shell.nix
done
server started

$ psql
psql: error: could not connect to server: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on …
Run Code Online (Sandbox Code Playgroud)

postgresql nixos nix

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

返回lambda表达式的方法中的转换错误

这段代码没有问题:

#include "iostream"
#include  "functional"
std::function<double (double)> retFun(double* a) {
     return [a](double x) { return x+*a; };
 }

 int main(){

 double*e = new double(3);
 std::cout << retFun(e)(3) << std::endl;}
Run Code Online (Sandbox Code Playgroud)

但如果我retFun在一个对象中声明:

.H

class InternalVariables : public Page
{
private:
    std::function<double ()> retFun(double* a);
};
Run Code Online (Sandbox Code Playgroud)

的.cpp

std::function<double ()> InternalVariables::retFun(double *a)
{
    return [a](double b){ return b+ *a;};
}
Run Code Online (Sandbox Code Playgroud)

我得到以下错误

错误:无法将'InternalVariables :: retFun(double*):: __ lambda44 {a}'从'InternalVariables :: retFun(double*):: __ lambda44'转换为'std :: function'返回[a](双b) {return b +*a;};

c++ lambda c++11 std-function

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

是否可以串联迭代器?

let vec = iter::repeat("don't satisfy condition 1") // iterator such as next() always "don't " satisfy condition 1"
    .take_while(|_| {
        satisfycondition1.satisfy() // true is condition 1 is satisfied else false
    })
    .collect();
Run Code Online (Sandbox Code Playgroud)

此代码创建的n元素向量n等于不遵守条件1的次数。

我现在想创建一个n + m元素向量,其向量n等于不遵守条件1 m的次数和不遵守条件2的次数。

该代码应类似于以下内容:

let vec = iter::repeat("dont't satisfy condition 1")
    .take_while(|_| {
        satisfycondition1.satisfy() 
    })
    .union(
        iter::repeat("has satisfed condition 1 but not 2 yet")
        .take_while(|_| {
            satisfycondition2.satisfy() 
        })
    )
    .collect();
Run Code Online (Sandbox Code Playgroud)

我知道我可以创建两个向量,然后将它们连接起来,但是效率较低。

您可以使用以下代码来了解重复的内容:

use  std::iter;

fn main() { …
Run Code Online (Sandbox Code Playgroud)

iterator rust

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

为什么我在这个动态查询中需要关键字 TABLE,尽管在普通查询中不需要

db fiddle 现在不工作。稍后我会上传代码...

SELECT COUNT (*) FROM sys.odcivarchar2list ('2', '2');
Run Code Online (Sandbox Code Playgroud)

该查询无需使用关键字表即可工作。但在动态查询中:

DECLARE
    c             INTEGER;
    towtimestwo   SYS.odcivarchar2list := sys.odcivarchar2list ('2', '2');
BEGIN
    
     EXECUTE IMMEDIATE 'SELECT COUNT (*) FROM  :1'
        INTO c
        USING towtimestwo;
    DBMS_OUTPUT.put_line (c);

END;
Run Code Online (Sandbox Code Playgroud)

它不起作用:

无效的表名

因此我必须添加关键字。

DECLARE
    c             INTEGER;
    towtimestwo   SYS.odcivarchar2list := sys.odcivarchar2list ('2', '2');
BEGIN
    
     EXECUTE IMMEDIATE 'SELECT COUNT (*) FROM  table( :1)'
        INTO c
        USING towtimestwo;
    DBMS_OUTPUT.put_line (c);

END;
Run Code Online (Sandbox Code Playgroud)

为什么?

我正在使用 Oracle 19.0

oracle plsql

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

有没有办法在公用表表达式中显式给出类型?

这是这个问题的另一个续集:

我必须应用多态表函数,用某些内容替换 varchar2 的所有空值。

在这个例子中:

WITH
    a(aa1,aa2,aa3)
    AS
        (SELECT 1, '2', SYSDATE FROM DUAL
         UNION ALL
         SELECT NULL, NULL, NULL FROM DUAL)
SELECT *
  FROM TABLE (f_replace_nulls(a))
Run Code Online (Sandbox Code Playgroud)

aa2 的类型是 varchar2(1),因为 '2' 是 varchar2(1)。如果 f_replace_nulls 将空值替换为“n/a”,则 dbfiddle 中只会给出“n”,并且在我的计算机上会出现以下错误。

[错误] 执行 (2: 1): ORA-62576: 放置列中的列 (AA2) 的目标大小 (1) 小于源大小 (3)

代码

为了删除这个问题,我想明确提及 aa2 是 varchar2(5)。

或者如果有其他方法可以解决这个问题,我很高兴知道。

sql oracle

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

为什么在 DBA_PROCEDURES 中找不到 LNNVL

LNNVL 存在,因为以下语句有效。

 select 1 from dual where not(LNNVL(1=1));
Run Code Online (Sandbox Code Playgroud)

但我在 DBA_PROCEDURE 中找不到它

SELECT *
  FROM SYS.DBA_PROCEDURES
 WHERE UPPER (procedure_name) = 'LNNVL';
Run Code Online (Sandbox Code Playgroud)

无效的

这是一个内置过程,但也是 REGXXP_LIKE,以下查询返回一行

 SELECT *
  FROM SYS.DBA_PROCEDURES
 WHERE UPPER (procedure_name) = 'REGEXP_LIKE';
Run Code Online (Sandbox Code Playgroud)

oracle

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

标签 统计

oracle ×4

nix ×2

nixos ×2

plsql ×2

c# ×1

c++ ×1

c++11 ×1

iterator ×1

lambda ×1

postgresql ×1

rust ×1

sql ×1

std-function ×1