GVKun编程网logo

DROP FUNCTION 不知道参数的数量/类型?(.drop函数)

18

对于想了解DROPFUNCTION不知道参数的数量/类型?的读者,本文将提供新的信息,我们将详细介绍.drop函数,并且为您提供关于c#–具有引用参数/参数或匿名函数的Func/Action委托、Dr

对于想了解DROP FUNCTION 不知道参数的数量/类型?的读者,本文将提供新的信息,我们将详细介绍.drop函数,并且为您提供关于c# – 具有引用参数/参数或匿名函数的Func / Action委托、DropdownButton 错误:无法将参数类型“void Function(String)”分配给参数类型“void Function(String?)?”、function – 如何在Scala中将类型参数化参数专门化为多个不同类型?、function, new function, new Function之间的区别_javascript技巧的有价值信息。

本文目录一览:

DROP FUNCTION 不知道参数的数量/类型?(.drop函数)

DROP FUNCTION 不知道参数的数量/类型?(.drop函数)

我将所有函数保存在一个带有''CREATE OR REPLACE FUNCTION somefunction''. 因此,如果我添加或更改某些功能,我只需将文件提供给 psql。

现在,如果我向现有函数添加或删除参数,它会创建一个具有相同名称的重载,并删除原始的我需要的所有参数类型按确切顺序键入,这有点乏味。

是否有某种通配符可以用来删除具有给定名称的所有函数,以便我可以在DROP FUNCTION文件顶部添加行?

答案1

您需要编写一个函数,该函数采用函数名称,并从 中查找每个重载及其参数类型information_schema,然后DROP为每个重载构建并执行 a 。

编辑:结果证明这比我想象的要困难得多。看起来information_schema它的routines目录中没有保留必要的参数信息。所以你需要使用 PostgreSQL 的补充表pg_procpg_type

CREATE OR REPLACE FUNCTION udf_dropfunction(functionname text)  RETURNS text AS$BODY$DECLARE    funcrow RECORD;    numfunctions smallint := 0;    numparameters int;    i int;    paramtext text;BEGINFOR funcrow IN SELECT proargtypes FROM pg_proc WHERE proname = functionname LOOP    --for some reason array_upper is off by one for the oidvector type, hence the +1    numparameters = array_upper(funcrow.proargtypes, 1) + 1;    i = 0;    paramtext = '''';    LOOP        IF i < numparameters THEN            IF i > 0 THEN                paramtext = paramtext || '', '';            END IF;            paramtext = paramtext || (SELECT typname FROM pg_type WHERE oid = funcrow.proargtypes[i]);            i = i + 1;        ELSE            EXIT;        END IF;    END LOOP;    EXECUTE ''DROP FUNCTION '' || functionname || ''('' || paramtext || '');'';    numfunctions = numfunctions + 1;END LOOP;RETURN ''Dropped '' || numfunctions || '' functions'';END;$BODY$  LANGUAGE plpgsql VOLATILE  COST 100;

我在一个重载的函数上成功地测试了这个。它很快被组合在一起,但作为一个实用函数运行良好。我建议在实际使用之前进行更多测试,以防我忽略了一些东西。

c# – 具有引用参数/参数或匿名函数的Func / Action委托

c# – 具有引用参数/参数或匿名函数的Func / Action委托

我只是想知道,委托和内联lambda函数的ref和out参数的确切语法是怎样的.

这是一个例子

如果函数定义为

public void DoSomething(int withValue) { }

可以通过创建函数中的委托

public void f()
 {   
     Action<int> f2 = DoSomething;
     f2(3);
 }

如果将原始函数定义为,那该语法是怎样的

public void DoSomething(ref int withValue) { withValue = 3; }

解决方法

您需要为此方法签名定义新的委托类型:
delegate void RefAction<in T>(ref T obj);

public void F()
{
    RefAction<int> f2 = DoSomething;
    int x = 0;
    f2(ref x);
}

.NET Framework不包含此类型的原因可能是因为ref参数不是很常见,如果为每个可能的组合添加一个委托类型,则所需类型的数量会爆炸.

DropdownButton 错误:无法将参数类型“void Function(String)”分配给参数类型“void Function(String?)?”

如何解决DropdownButton 错误:无法将参数类型“void Function(String)”分配给参数类型“void Function(String?)?”?

在迁移到空安全后,我开始在 DropdownButton 中看到此错误。

DropdownButton<String>(
  value: myValue,onChanged: (String string) { // Error
    print(string);
  },items: [
    DropdownMenuItem(
      value: ''foo'',child: Text(''Foo''),),DropdownMenuItem(
      value: ''bar'',child: Text(''Bar''),],)

错误:

无法将参数类型“void Function(String)”分配给参数类型“void Function(String?)?”。

解决方法

检查 value 属性的实现,它可以为空。

final T? value;

这意味着您可以向 String? 提供 value,如果您提供 String?onChanged 应该不会返回 String?

回答您的问题:

onChanged 方法的类型从 String 更改为 String?,如下所示:

onChanged: (String? string) { 
  print(string);
}

或者,只需省略 String? 类型,让 Dart 为您推断。

onChanged: (string) { 
  print(string);
}

function – 如何在Scala中将类型参数化参数专门化为多个不同类型?

function – 如何在Scala中将类型参数化参数专门化为多个不同类型?

我需要反击(请).

在一篇文章(http://www.win-vector.com/blog/2010/06/automatic-differentiation-with-scala/)中我写道,我说我对Scala的信念是你不能指定一个带有参数的函数,该参数本身就是一个带有未绑定类型参数的函数.我已编辑此问题以尝试简化示例.

下面的代码通过引入模仿Scala Function1特征的特征GenericFn来工作,除了它在函数中有一个free-type参数:

object TypeExample {
    trait NumberBase {
        def result:String
    }

    class A extends NumberBase {
        def result = "A"
    }

    class B extends NumberBase {
        def result = "B"
    }

    trait GenericFn {
        def apply[X<:NumberBase](x:X):String
    }

    def specializeAndApplyTwice(f:GenericFn):String = {
        f[A](new A()) + f[B](new B())
    }

    def main(args : Array[String]) : Unit = {
        val f = new GenericFn {
            def apply[X<:NumberBase](x:X):String = { x.result }
        }
        println(specializeAndApplyTwice(f))
    }
}

这有效,但有没有一种方法可以在没有GenericFn特征的情况下执行此操作(使用标准函数表示法)?例如,下面的代码失败并出现编译时错误:“type mismatch; found:TypeExample2.A required:_ $1 where type _ $1<:TypeExample2.NumberBase”:

def specializeAndApplyTwice(f:(_<:NumberBase)=>String):String = {
   f(new A()) + f(new B())
}

解决方法

重申问题的最初动机:我们想给一个值’g’的类型,因为我们想传递它. Scala值(当然)不能具有多态类型,即使它们是函数值.那么如何给出其中某些部分未知的类型?

所以我相信一种解决方案是使用通配符(一种存在抽象形式):

def g(f: Array[_ &lt: NumberBase[_]] => Double,z: Array[Double]): Double

关于g类型的散文解释是:从Array [T]和Array [Double]到Double的函数,其中T是扩展Double的某种类型. “some”是表示存在抽象的词,我们要求这种类型存在,尽管我们在这一点上并不关心它是哪一种.

function, new function, new Function之间的区别_javascript技巧

function, new function, new Function之间的区别_javascript技巧

函数是JavaScript中很重要的一个语言元素,并且提供了一个function关键字和内置对象Function,下面是其可能的用法和它们之间的关系。

    使用方法一: 

复制代码 代码如下:

 var foo01 = function() //or fun01 = function() 
 { 
     var temp = 100; 
     this.temp = 200; 
     return temp + this.temp; 
 } 

 alert(typeof(foo01)); 
 alert(foo01()); 
   运行结果:
 function
 300    最普通的function使用方式,定一个JavaScript函数。两种写法表现出来的运行效果完全相同,唯一的却别是后一种写法有较高的初始化优先级。在大扩号内的变量作用域中,this指代foo01的所有者,即window对象。

    使用方法二: 
 
复制代码 代码如下:

var foo02 = new function() 
 { 
     var temp = 100; 
     this.temp = 200; 
     return temp + this.temp; 
 } 

 alert(typeof(foo02)); 
 alert(foo02.constructor());    
运行结果:  object
 300    这是一个比较puzzle的function的使用方式,好像是定一个函数。但是实际上这是定一个JavaScript中的用户自定义对象,不过这里是个匿名类。这个用法和函数本身的使用基本没有任何关系,在大扩号中会构建一个变量作用域,this指代这个作用域本身。

    使用方法三:  
复制代码 代码如下:

var foo3 = new Function(''var temp = 100; this.temp = 200; return temp + this.temp;''); 

 alert(typeof(foo3)); 
 alert(foo3());    
运行结果:  function
 300    使用系统内置函数对象来构建一个函数,这和方法一中的第一种方式在效果和初始化优先级上都完全相同,就是函数体以字符串形式给出。

    使用方法四: 
 
复制代码 代码如下:

var foo4 = Function(''var temp = 100; this.temp = 200; return temp + this.temp;''); 

 alert(typeof(foo4)); 
 alert(foo4());    
运行结果:
function
300    这个方式是不常使用的,效果和方法三一样,不过不清楚不用new来生成有没有什么副作用,这也体现了JavaScript一个最大的特性:灵活!能省就省。

    关于函数初始化优先级这个问题,可以参看:"JS类定义原型方法的两种实现的区别"的回复。

今天的关于DROP FUNCTION 不知道参数的数量/类型?.drop函数的分享已经结束,谢谢您的关注,如果想了解更多关于c# – 具有引用参数/参数或匿名函数的Func / Action委托、DropdownButton 错误:无法将参数类型“void Function(String)”分配给参数类型“void Function(String?)?”、function – 如何在Scala中将类型参数化参数专门化为多个不同类型?、function, new function, new Function之间的区别_javascript技巧的相关知识,请在本站进行查询。

本文标签:

上一篇【NET CORE微服务一条龙应用】开始篇与目录(.net core 微服务)

下一篇Oracle UNION 和 ORDER BY 的奇怪问题(oracle union all order by)