aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 6587|回复: 5

print 和直接用text的结果不一样!

[复制链接]

12

主题

20

回帖

396

积分

二级会员

积分
396
发表于 2018-1-6 20:27:14 | 显示全部楼层 |阅读模式
  1. import win.ui;
  2. /*DSG{{*/
  3. var winform = win.form(text="aardio form";right=759;bottom=469;parent=...)
  4. winform.add(
  5. button={cls="button";text="button";left=579;top=90;right=691;bottom=193;z=2};
  6. txt_log={cls="richedit";left=33;top=42;right=529;bottom=396;edge=1;multiline=1;z=1}
  7. )
  8. /*}}*/

  9. winform.button.oncommand = function(id,event){
  10.         //winform.msgbox( winform.button.text );
  11.        
  12.         var timestra = "2017-12-24";
  13.        
  14.        
  15.          
  16.         var ts = time(timestra,"%y%m%d");
  17.        
  18.         winform.txt_log.text = ts;
  19.        
  20.         winform.txt_log.print();
  21.        
  22.         winform.txt_log.print(ts);
  23.        
  24.          
  25.        
  26. }
  27. winform.enableDpiScaling();
  28. winform.show();

  29. win.loopMessage();
  30. return winform;
复制代码

12

主题

20

回帖

396

积分

二级会员

积分
396
 楼主| 发表于 2018-1-6 20:27:54 | 显示全部楼层
返回结果!

  1. 171224
  2. time(1514118439,"%y%m%d")
复制代码

42

主题

80

回帖

950

积分

荣誉会员

积分
950
发表于 2018-1-6 20:58:24 | 显示全部楼层
要想一样的话,把文件
\lib\win\ui\ctrl\edit.aardio

201行改为
if( t == "table" ? !args[ i ]@[["_tostring"]] ) args[ i ] = stringify(args[ i ],pretty);

。。。。。。。。。。。。。。。。。。。。。。。。。

8

主题

56

回帖

464

积分

二级会员

积分
464
发表于 2018-1-7 00:01:32 | 显示全部楼层
显示结果相同才叫有问题呢!

紫薯布丁~紫薯布丁~紫薯布丁~

42

主题

80

回帖

950

积分

荣誉会员

积分
950
发表于 2018-1-7 01:07:02 | 显示全部楼层
    print = function(...){        var args = {...};
        
var b,e,t = ..table.range(args);
        
var stringify = ..web[["json"]] ? ..web.json.stringify : ..table.tostring;
        
var pretty = !!..web[["json"]];
        
for(i=b;e){
            t =
type(args[ i ]) ;
            
if( t != "string" ) {
               
if( t == "table"  ){
                    
if( args[ i ]@[["_tostring"]] ){
                        args[ i ] =
tostring(args[ i ])
                    }
                    
else {
                        args[ i ] = stringify(args[ i ],pretty);
                    }   
                }
               
else args[ i ] = tostring(args[ i ]);
            }
        };
        
owner.appendText( ..string.join(args,'\t'),'\r\n');
        
owner.scrollCaret();
    };
改下print函数就一样了

170

主题

2184

回帖

1万

积分

管理员

积分
13236
发表于 2018-1-7 01:58:11 | 显示全部楼层
这是aardio容错的实现,并不表示你的代码就是对的,
time对象赋值给字符串,本来就应当先用 tostring()转换

还有这些:
edit.appendText()
edit.printf()
......,他们的功能、对输入参数的要求都不一样。

edit.print() 注意看下函数说明,
table对象序列化(或转换为JSON)后显示。
因为这个函数被用于调试,如果只是生成字符串显示给用户,完全不必要用这个函数。
一般不必要在文本框里,用控制台的风格显示变量组用户瞧。
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2024-4-15 05:03 , Processed in 0.055831 second(s), 22 queries .

Powered by Discuz! X3.5

Copyright © 2001-2023 Tencent Cloud.

快速回复 返回顶部 返回列表