CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  语言基础/算法/系统设计

functional可一次返回多个值吗

楼主Itfeng()2005-08-18 00:15:09 在 Delphi / 语言基础/算法/系统设计 提问

functional   js(a,b:string):string     //只能返回一个值  
   
  调用函数时怎样才能返回多个值?  
  问题点数:20、回复次数:7Top

1 楼UC80862056(Alizee艾莉婕的粉丝)回复于 2005-08-18 03:27:47 得分 0

使用变参,即用var声明的参数。也叫传址参数。Top

2 楼zzlingaaa(小舟)回复于 2005-08-18 07:36:12 得分 5

funcation   js(a,b:   string;   var   c,d:   string):   string;  
  c,d也可以做为"返回值"Top

3 楼hangguojun(布丁)回复于 2005-08-18 07:56:21 得分 5

functional,funcation也是函数关键字吗?  
  郁闷中...  
   
  function   js(a,b:   string):   array   of   string;   //   这样也可以  
  Top

4 楼konhon(优华)回复于 2005-08-18 08:05:46 得分 5

可以返回數組或類對象呀.  
  數組和類對象都可以包含多個值的.  
     
   
  返回數組,好像要這樣:  
  Type  
      TStringArr   =   Array   of   String;  
   
  function   js(a,b:   string):   TStringArr;   //   这样也可以  
   
   
  Top

5 楼Itfeng()回复于 2005-08-18 17:27:32 得分 0

引用:使用变参,即用var声明的参数。也叫传址参数。  
  funcation   js(a,b:   string;   var   c,d:   string):   string;  
  这里声明的C和D不是全局变量,在这里声明能返回给另外的窗体吗?  
   
  数组应该可以,如果这样function   js(a,b:   string):   array   of   string;    
  那调用函数后,返回的多个值又怎样赋予其它变量呢?  
  调用x:=JS('AA','bb')后,假如返回了多个值'dd'和'ee',那x这时赋予了什么?是否要把X定义成数组!  
   
  Top

6 楼Eastunfail(龍子龍孫) (Serpent's Embrace)回复于 2005-08-18 18:20:53 得分 5

要类似lua语言那样的一次性返回多个变量,可以“模拟”出来:  
  定义一个类型和一个函数:  
  type  
      TValues=array   of   variant;  
      function   _V(args:array   of   const):TValues;  
      var   rec:TVarRec;  
          i:Integer;  
      begin  
          SetLength(Result,Length(args));  
          i:=0;  
          for   rec   in   args   do  
          begin  
              case   rec.VType   of  
                  vtInteger           :Result[i]:=rec.VInteger   ;  
                  vtBoolean           :Result[i]:=rec.VBoolean;  
                  vtChar                 :Result[i]:=rec.VChar;  
                  vtExtended         :Result[i]:=rec.VExtended^;  
                  vtString             :Result[i]:=rec.VString^;  
                  vtPChar               :Result[i]:=String(rec.VPChar);  
                  vtWideChar         :Result[i]:=rec.VWideChar;  
                  vtPWideChar       :Result[i]:=WideString(rec.VPWideChar);  
                  vtAnsiString     :Result[i]:=String(rec.VAnsiString);  
                  vtCurrency         :Result[i]:=rec.VCurrency^;  
                  vtVariant           :Result[i]:=rec.VVariant^;  
                  vtWideString     :Result[i]:=WideString(rec.VWideString);  
                  vtInt64               :Result[i]:=rec.VInt64^;  
                  //不支持的类型  
  //                 vtInterface       :Result[i]:=rec.VInterface;  
  //                 vtPointer           :Result[i]:=Variant(rec.VPointer);  
  //                 vtObject             :Result[i]:=rec.VObject;  
  //                 vtClass               :Result[i]:=rec.VClass;  
              end;  
              Inc(i);  
          end;  
      end;  
   
  使用例子:  
      function   Calculate(a,b:Integer):TValues;  
      begin  
          result:=_V([   a+b   ,   a-b   ,   a*b   ,   a   div   b   ]);  
      end;  
  var   results:TValues;v:Variant;  
  begin  
      Results:=Calculate(6,2);  
      for   v   in   results   do  
          writeln('Result:',v);  
  end.  
  等价于lua的:  
  function   Calculate(a,b)  
  return   a+b,a-b,a*b,a/b  
  endTop

7 楼Itfeng()回复于 2005-08-18 21:23:59 得分 0

谢谢楼上,不过这样也太有点~~~,有点晕...呀Top

相关问题

  • 一次返回多个值?
  • dll可不可以一次返回两个返回值?
  • 函数可以两次返回值吗?
  • 条件?返回值1:返回值2????
  • showModalDialog的返回值
  • 函数返回值???
  • 返回值问题
  • 返回值问题??
  • main()的返回值
  • 返回值问题

关键词

  • 函数
  • js
  • 返回
  • 值
  • rec
  • 數組
  • funcation
  • 变量
  • 参数
  • 调用

得分解答快速导航

  • 帖主:Itfeng
  • zzlingaaa
  • hangguojun
  • konhon
  • Eastunfail

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo