当函数需要返回很多变量时的烦恼 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
songdg
V2EX    程序员

当函数需要返回很多变量时的烦恼

  •  
  •   songdg 2019-11-21 10:44:18+08:00 3789 次点击
    这是一个创建于 2152 天前的主题,其中的信息可能已经有所发展或是发生改变。

    当函数需要返回很多变量时有没有什么优雅的写法,想过将变量放进数组里。

    第 1 条附言    2019-11-21 16:51:34 +08:00
    谢谢大家的回复,之所以没写语言是想看看各大语言的处理方法。
    21 条回复    2019-11-22 08:31:24 +08:00
    wutiantong
        1
    wutiantong  
       2019-11-21 10:55:08 +08:00
    既然你连语言都没写,这里有个万能解:序列化,返回字节流或者文件路径。
    lihongjie0209
        2
    lihongjie0209  
       2019-11-21 10:56:58 +08:00
    tuple 可解

    java 用 vavr

    python 自带
    CrisTao
        3
    CrisTao  
       2019-11-21 11:12:19 +08:00
    map 就可以了啊
    laike9m
        4
    laike9m  
       2019-11-21 11:12:46 +08:00 via Android
    语言?
    coderluan
        5
    coderluan  
       2019-11-21 11:19:40 +08:00
    封装
    augustheart
        6
    augustheart  
       2019-11-21 11:22:51 +08:00
    返回一个对象
    wysnylc
        7
    wysnylc  
       2019-11-21 11:34:15 +08:00
    返回对象
    如果是要附带返回异常信息请用 exception+try-catch
    不要写 map 会导致方法不可读无语义
    sagaxu
        8
    sagaxu  
       2019-11-21 11:42:35 +08:00 via Android
    Kotlin,两个用 Pair,三个用 Triple,四个以上建议定义一种类型
    GPLer
        9
    GPLer  
       2019-11-21 11:50:46 +08:00 via Android
    用 lua
    hyperbin
        10
    hyperbin  
       2019-11-21 11:54:09 +08:00 via Android
    写题目完自己都不读一下吗?
    ipwx
        11
    ipwx  
       2019-11-21 12:00:59 +08:00 via Android
    场景不说,语言不说,你想让咱回答杀啥
    ochatokori
        12
    ochatokori  
       2019-11-21 12:13:48 +08:00 via Android
    js ?对象数组随便挑
    yuyu2140
        13
    yuyu2140  
       2019-11-21 12:29:54 +08:00
    不就是解构声明吗
    EminemW
        14
    EminemW  
       2019-11-21 12:30:17 +08:00 via iPhone
    Json 或者 map 不行吗
    bearxu
        15
    bearxu  
       2019-11-21 13:08:03 +08:00
    tuple<................>
    crclz
        16
    crclz  
       2019-11-21 13:42:49 +08:00
    public (int, string, int) SomeCsharpFunction(){
    return (1,"2",3)
    }
    Fuste
        17
    Fuste  
       2019-11-21 15:09:31 +08:00
    我觉得构造一个类或者结构体比较好,返回动态结构不太利于维护和可读性
    ahojcn
        18
    ahojcn  
       2019-11-21 16:44:01 +08:00
    struct
    class
    global var
    annielong
        19
    annielong  
       2019-11-21 16:54:41 +08:00
    通用就上 string 数组,不通用就建 class,简单粗暴,兼容
    beyondex
        20
    beyondex  
       2019-11-21 17:12:00 +08:00 via Android
    c# 用元组,有需要还可以给多个对象分别命名。
    levelworm
        21
    levelworm  
       2019-11-22 08:31:24 +08:00 via Android
    话说为何需要有很多返回值?能否从设计上改变呢?好奇
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2810 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 13:47 PVG 21:47 LAX 06:47 JFK 09:47
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86