QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 8740|回复: 2
打印 上一主题 下一主题

Lu中的运算符重载

[复制链接]
字体大小: 正常 放大
forcal 实名认证       

45

主题

3

听众

282

积分

升级  91%

  • TA的每日心情
    难过
    2012-8-27 18:22
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2011-10-20 09:57 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
        在Lu中可以很方便地对运算符进行重载。例如:
    1. thetype(x,y,num,op)=which' w7 P. t. K* b% Z( B
    2. {
      % }5 V. f% @7 a3 S' f- D, k6 V, O
    3.   op<0  : return[newtype()],
      # ]- m# J/ b\" Z\" \\" @& A
    4.   op==0 : x-y,    //重载运算符+% V1 p/ X% e- k2 _: `& Q& c. }
    5.   op==1 : x+y,    //重载运算符-* N9 z) e0 R+ c\" i
    6.   op==2 : x/y,    //重载运算符*& e* z/ U3 E# C6 K' u
    7.   nil             //该数据类型不支持该运算符的重载,返回nil
      4 ]' F9 U+ @; O: L- s/ v2 s8 N2 k
    8. };% Y+ g9 R, w0 i7 \* Q
    9. test(:type,a,b)=
      0 k, e0 ^: N% n2 ]* ?- c$ i
    10.   type=thetype(0,0,0,-1),  //获取新数据类型- U4 ^$ A, {5 A; I
    11.   a=cast[3,type], b=cast[5,type],  //强制转换为新数据类型
      9 x0 h. E7 U5 x0 r5 h$ W# W
    12.   o[" a=",3," b=",5],  //输出a和b  z; t6 X/ `! U4 N# D) I
    13.   o[" a+b=",a+b],      //计算并输出a+b,变成了a-b8 R2 N  V4 u& L& c
    14.   o[" a-b=",a-b],      //计算并输出a-b,变成了a+b\" X$ m6 H& w6 N, g# H1 d
    15.   o[" a$b=",a$b];      //没有重载运算符$,故输出nil
    复制代码
    结果:
    1. a=3 b=5 a+b=-2 a-b=8 a$b=nil
    复制代码
    ======5 U# `+ T' W$ j; s
    ' O# o4 T, g0 G$ N; P: D
      Lu核心库中没有提供矩阵运算,但在脚本中可以通过重载运算符来实现:
    1. outm(x:i,j,m,n)= //输出一个矩阵( h/ @. W/ L/ c1 O
    2. {3 V. Z, L% W1 a0 N/ q4 H* w) t
    3.         len[x,0,&m,&n],
      2 w6 n/ j$ U4 `
    4.         i=0, while{i<m,
      8 h1 @& j- ~  V; Q/ z\" `+ p
    5.                 o["\r\n"], j=0, while{j<n, o[x(i,j),"  "], j++},
      2 o1 e# O% i1 ]/ w
    6.                 i++# @& u1 \! ^% E1 G
    7.         },
      # f, o' r/ T6 t, P! d, n$ ^
    8.         o["\r\n"], x
      + Y. r* h6 ]# _: u5 t) Q
    9. };8 C5 h7 m* ?  [5 i' l/ ]& ?
    10. mymatrix(x,y,num,op:c,i,j,k,m,n,u)=which //定义矩阵运算
      6 e& ]; I5 e% l
    11. {
      9 j; c) M& i/ l: |& P
    12.         op<0  : return[newtype()],0 [8 i) p* {; X. h+ m8 r! b
    13.         op==0 :        //重载运算符+# {5 m\" G! [0 \7 f# c. Q
    14.         {, s7 ^- F7 {5 U) Z; N4 [6 ~
    15.                 len[x,0,&m,&n], c=new[reals,m,n].global(),
      ( Z: w5 ]! E) r\" J* `  N
    16.                 i=0, while{i<m,- p# Q2 D2 w\" Z8 Y7 t\" l4 s9 p
    17.                         j=0, while{j<n,
      9 D. N0 h  o+ G# a, f
    18.                                 c[i,j]=x[i,j]+y[i,j],
      3 `0 R- @/ l1 L- V* [. h\" x
    19.                                 j++
      . C3 z, V# y\" n
    20.                         },1 z) G6 J$ {2 t
    21.                         i++  E0 ~) _/ H0 v8 a5 f
    22.                 },& G3 R# z0 s% J
    23.                 c
      5 H, _& V: _, k4 k' P2 k& p
    24.         },
      # a. U1 V# I4 O
    25.         op==1 :        //重载运算符-
      \" n6 a! ]' E6 A( s
    26.         {- ^. ]7 s' J2 n\" ~+ h\" \! }
    27.                 len[x,0,&m,&n], c=new[reals,m,n].global(),$ Y  }0 b0 g4 }9 ^
    28.                 i=0, while{i<m,' a, {* Y/ b\" Y, Y: I
    29.                         j=0, while{j<n,  ^+ y* e# w4 v
    30.                                 c[i,j]=x[i,j]-y[i,j],
      9 I$ W9 n$ p7 g& q
    31.                                 j++
      / d! Y  C9 B5 T0 w! }$ I3 R
    32.                         },: }0 w. }  ~  L
    33.                         i++( o6 |+ a2 Z) j0 N! b# c6 }
    34.                 },
      $ k. J5 D0 g4 O. c
    35.                 c. v: [( f& G+ V- r
    36.         },
      * {& u2 t! u. q5 g- f, J
    37.         op==2 :        //重载运算符*$ u8 J9 a) X& S
    38.         {
      8 Z\" o5 y1 J: M7 w' v9 K
    39.                 len[x,0,&m,&n], len[y,0,n,&k], c=new[reals,m,k].global(),\" C- U/ ?9 u0 f( H4 H
    40.                 i=0, while{i<m,
      6 V' p8 s2 p/ m1 c: P- [
    41.                         j=0, while{j<k,\" `) x) a& u. {\" b\" @! U2 d
    42.                                 c[i,j]=0.0,8 L6 O# W0 S' ?7 F
    43.                                 u=0, while{u<n,5 O! o0 T) }+ ?& y( L. m6 Y
    44.                                         c[i,j]=c[i,j]+x[i,u]*y[u,j], u++
      ( k5 _\" @- r! r- T& |
    45.                                 },
      - S: j. K$ [  x' Z9 k
    46.                                 j++. f8 N, c/ u: e2 n$ _6 e8 n1 H+ Y1 Q4 Q
    47.                         },+ @, D  K. p3 t# l3 A$ R
    48.                         i++
      8 O+ \2 X7 d1 @$ g
    49.                 },
      : m% E. M: O* Q
    50.                 c
      , r. Q# D. O) d5 j; E
    51.         },1 l# ^( I) m( R/ C# r. p
    52.         op==25 ://重载运算符.*0 [2 i/ j3 x0 J  W0 D8 u
    53.         {
      4 Y5 C* t$ K$ R6 ]& X6 h0 R
    54.                 len[x,0,&m,&n], c=new[reals,m,n].global(),
      - b7 p8 F4 _, e8 X3 o\" u+ b+ `# j
    55.                 i=0, while{i<m,
      8 V; T9 m  ^, B7 E
    56.                         j=0, while{j<n,. v' d0 q  u\" x& ]) F7 `4 \) N
    57.                                 c[i,j]=x[i,j]*y[i,j],0 A1 P* x' r5 S, o+ X. e+ ~4 }; @
    58.                                 j++
      % u4 o. h+ K4 @' j, Z\" j+ d
    59.                         },
      ( x# I/ i6 U6 X$ m: R2 X( |
    60.                         i++! c1 T& Z! v& `: P6 M
    61.                 },
      & _1 S2 U/ ]$ |. N% g6 n
    62.                 c- ?3 \1 V2 t2 t
    63.         },9 t( ]# `, z7 l! e9 c) w
    64.         op==26 ://重载运算符./+ a& A# C2 {9 f- D! s- D
    65.         {5 b$ Y3 s7 o6 X0 v0 C
    66.                 len[x,0,&m,&n], c=new[reals,m,n].global(),
      ; a5 s7 Q! G1 o* X0 j1 N/ J
    67.                 i=0, while{i<m,6 X* P) j' C7 f& h
    68.                         j=0, while{j<n,\" q$ P( l% ]- Z1 K1 w( y
    69.                                 c[i,j]=x[i,j]/y[i,j],
      : Q& A- d7 X\" z7 c
    70.                                 j++: y% ?: c: e4 L4 K7 }: [+ _  U' M
    71.                         },
      # f4 S/ r9 L/ [
    72.                         i++
      ) W4 B  m- b4 b: g+ Z4 b! u/ p; V
    73.                 },
      \" c5 Q) ], o\" l( ^/ d& t
    74.                 c
      $ j' K# `; b/ z
    75.         },
      ' S/ L7 ~5 g7 u2 d5 ~' X
    76.         nil        //该数据类型不支持该运算符的重载,返回nil7 J. [1 F. R9 ?$ p+ u6 W
    77. };; y1 m1 C# N5 B% w: ]% b
    78. test(:type,a,b,c)=
      : l6 i* J  Q\" Q2 V. u! T% n# _
    79.         type=mymatrix(0,0,0,-1),  //获取新数据类型
      % m, T3 ?* }' t( |+ W: o8 w1 Z
    80.         a=new[reals,2,3,data: 0.,1.,2.,3.,4.,5.],  //生成矩阵a
      1 ~8 K$ [! o% Z1 P6 B
    81.         b=new[reals,2,3,data: 1.,2.,3.,4.,5.,6.],  //生成矩阵b) r6 J: x; J% e6 J4 N
    82.         c=new[reals,3,2,data: 6.,7.,8.,9.,0.,1.],  //生成矩阵c  i5 v6 T% a( ]' M0 ~& d, h7 O: ?
    83.         o["a="], outm(a), o["b="], outm(b), o["c="], outm(c),  //输出a、b和c
      ' C9 I3 y. F) c7 e: i
    84.         a=cast[a,type], b=cast[b,type],  //强制转换为新数据类型
      0 A, ]- E6 z& x2 R: I
    85.         o["a+b="], outm[a+b],     //计算并输出a+b
      $ C' n0 ]& k7 o2 _
    86.         o["a-b="], outm[a-b],     //计算并输出a-b
      ) P& d& [* Z( Y# c3 I
    87.         o["a*c="], outm[a*c],     //计算并输出a*c- e) A* }+ u) O9 r  H) f
    88.         o["a.*b="],outm[a.*b],    //计算并输出a.*b( [2 W) _9 I& k) A1 Z# Q
    89.         o["a./b="],outm[a./b];    //计算并输出a./b
    复制代码
    结果:
    1. a=) `! n3 W) y* ^, ]
    2. 0.  1.  2.  
      & A7 r' @9 i+ b& R
    3. 3.  4.  5.  5 |  O3 J/ f$ w
    4. b=) U4 W, h) K\" q0 _
    5. 1.  2.  3.  # f- _1 S: e, k5 c) v  V- i
    6. 4.  5.  6.  * T1 Q/ K. m. f
    7. c=
      - g, _: S: G8 \/ A
    8. 6.  7.  % z# p$ v3 {7 ]% T6 L2 z  |0 H
    9. 8.  9.  8 L& w' i0 R8 c( J
    10. 0.  1.  
      8 Z8 W* ^8 s4 j9 ]8 B* g% [0 n
    11. a+b=7 D# K' a5 V+ d+ p: K
    12. 1.  3.  5.  ( V# t+ h( C- e
    13. 7.  9.  11.  5 w8 l% E$ E0 f' z; U' Z
    14. a-b=& k\" v' f2 F' M8 P; ?
    15. -1.  -1.  -1.  * M$ [/ z, D! t4 c) B. p
    16. -1.  -1.  -1.  
      % ^7 }0 u+ k\" a/ W1 s
    17. a*c=
      ' [* F. O\" j$ D
    18. 8.  11.  
      4 {\" ~6 o' e' I* ?' i
    19. 50.  62.  
      3 g5 C* [1 t1 T9 h2 T6 P
    20. a.*b=
      + f0 G4 g+ ]& u( }- S. J. Y1 A
    21. 0.  2.  6.  
      2 x+ [9 [+ N- T( y
    22. 12.  20.  30.  1 _0 D6 [# k8 g5 Q
    23. a./b=* q\" `5 X& T' B1 a
    24. 0.  0.5  0.66666666666666663  / |& u2 T7 v# E$ Y
    25. 0.75  0.80000000000000004  0.83333333333333337
    复制代码
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    forcal 实名认证       

    45

    主题

    3

    听众

    282

    积分

    升级  91%

  • TA的每日心情
    难过
    2012-8-27 18:22
  • 签到天数: 1 天

    [LV.1]初来乍到

    上面关于矩阵运算的运算符重载例子中,函数o和new也是可以重载的:
    1. mymatrix(x,y,z,para,num,op:c,i,j,k,m,n,u,static,me)=which //定义矩阵运算# i! }+ f: N# F3 \/ p\" Y% @/ X; d
    2. {; E8 w\" Z& q4 z
    3.         op<0  : return[me=newtype()],# {9 X+ T; N( q; j4 V) _
    4.         op==0 : //重载运算符+' D. p( ?- H1 k( i; S$ d6 v
    5.         {
      3 p4 ?1 g( }- f, Y
    6.                 len[x,0,&m,&n], c=new[reals,m,n].global(),
      - h, i( d' l\" D* j+ R: r, V9 H
    7.                 i=0, while{i<m,+ @2 O) G/ z2 W2 b
    8.                         j=0, while{j<n,2 G/ s( }8 B* d0 }7 e# J
    9.                                 c[i,j]=x[i,j]+y[i,j],
      $ i+ J! \& ?! `$ @1 Y) o* n
    10.                                 j++
      ) \1 J\" W! f: G/ l& P\" ?
    11.                         },) u2 T6 Q# d0 K2 T) _6 s
    12.                         i++* {# i5 T9 ]5 Y) s% S
    13.                 },) b- L\" q\" a% Z6 h5 S5 Q% ~
    14.                 cast[c,me]  //强制转换为新类型me(矩阵),下同7 j+ `' h9 j' d6 e
    15.         },
      , X5 `5 P' Z\" [6 |$ n. x
    16.         op==1 : //重载运算符-+ G8 f7 Y2 J- K3 f2 A5 C) r6 K\" b
    17.         {
      * j! f1 M* {3 f8 ^# a/ W* X, r; X' u; _
    18.                 len[x,0,&m,&n], c=new[reals,m,n].global(),
      . F- C1 R; r\" o& S3 M& i) Y
    19.                 i=0, while{i<m,
      , h, \\" \* G& X1 w8 J2 f* ?# @
    20.                         j=0, while{j<n,
      ; f\" j5 N\" q0 n  s( z
    21.                                 c[i,j]=x[i,j]-y[i,j],- V  c/ A) Y5 o2 Q, @$ H
    22.                                 j++
      0 o& X' g5 e9 o/ \/ X* Y5 Q
    23.                         },5 _4 D1 ^% }\" d+ d% C1 w1 w
    24.                         i++
      + D& F* |, }' G
    25.                 },
      8 u4 X\" m# L: E9 g5 c
    26.                 cast[c,me]: J( u' `$ }\" _) x
    27.         },
      ! N5 ]. q7 J# n) K
    28.         op==2 : //重载运算符*
      # I) [$ W- B) N& M# [  {2 Z2 A
    29.         {
      5 h# a) }- }0 g* ~
    30.                 len[x,0,&m,&n], len[y,0,n,&k], c=new[reals,m,k].global(),
      ! {7 b$ q( }8 w1 g: V$ q% h. ^% O8 w
    31.                 i=0, while{i<m,
      $ D/ a- i: V. U8 I
    32.                         j=0, while{j<k,2 x. k! G' q0 _( C. n9 E\" f
    33.                                 c[i,j]=0.0,6 t6 M! x  u; y\" x) j, [
    34.                                 u=0, while{u<n,
      \" l1 t& |\" W\" x
    35.                                         c[i,j]=c[i,j]+x[i,u]*y[u,j], u++4 u) H1 W5 f3 _6 R4 s
    36.                                 },. J5 |/ x* ~' l4 p
    37.                                 j++/ \4 n\" k% _* Z3 J) \9 x  a
    38.                         },
      9 [- g8 L; M- ~\" F$ L5 u
    39.                         i++
      7 ], a, d3 g% \$ \( O
    40.                 },9 R2 s1 E6 d9 H. G
    41.                 cast[c,me]
      ) z% ?& C6 A3 h2 W
    42.         },
      $ O0 D9 |- W( C! g4 B
    43.         op==25 ://重载运算符.*
      \" {: K, X+ P( u
    44.         {
      * H; R8 x' y/ O1 h
    45.                 len[x,0,&m,&n], c=new[reals,m,n].global(),- C, c  }1 A# s  H( _0 R
    46.                 i=0, while{i<m,
      % w) L* V\" Z+ t
    47.                         j=0, while{j<n,# \' z5 `4 _5 H
    48.                                 c[i,j]=x[i,j]*y[i,j],
      % b: ~3 o. `* p2 ]( d9 O) f6 y  o
    49.                                 j++
      / W/ ~! I8 b5 z( v& F& n
    50.                         },4 u* ~\" g- b# e1 N% }! g  n
    51.                         i++
      & ?  F- K& x; ], j
    52.                 },4 X- F/ _1 _. U* b% s& ~) T5 o, }
    53.                 cast[c,me]
      ( O- q# o3 y( M$ }8 C+ e
    54.         },
      5 j3 A- X2 ~- }2 b0 R* ?
    55.         op==26 : //重载运算符./- E/ t% |2 k, D+ r
    56.         {
      : y. r& I; \! R
    57.                 len[x,0,&m,&n], c=new[reals,m,n].global(),
      ! g6 k2 `; O4 k% v0 p
    58.                 i=0, while{i<m,
      & N% ~* J+ G, m! Y
    59.                         j=0, while{j<n,
      ! J\" p1 F; U7 E- P( x: x
    60.                                 c[i,j]=x[i,j]/y[i,j],
      * _) o- ~% s, Z( l
    61.                                 j++
      , W4 n6 X; o& p; I/ M\" C! W
    62.                         },
      % Z. z, @# j7 c; s# U9 U
    63.                         i++4 A! n4 S2 [# l* D/ Z
    64.                 },
      ( q3 s7 S* [4 @3 t! I
    65.                 cast[c,me]' ?; X- e4 T7 R% l
    66.         },' r7 W( j& @& h& g& v9 L
    67.         op==46 : //重载函数new8 d  Z7 F- g- f6 v- d. [) t) N
    68.         {9 ~# l8 N7 O4 x: V: u\" `: y3 @) _
    69.                 c=new[reals,y,z].global(), m=len[para], k=0,
      5 Z* d* f; c) P# h, W
    70.                 i=0, while{i<y,
      9 k1 F. Y$ O\" S# j4 }$ Y- P
    71.                         j=0, while{j<z, if{k>=m, return[cast(c,me)]}, c(i,j)=para[k++], j++},
      0 i' p\" j0 h$ C( d6 j5 J$ F
    72.                         i++
      & w% F7 S, a8 c: C) I3 F% L
    73.                 },' M% z- _2 z- x7 x  k
    74.                 cast[c,me]\" F/ ?7 x! s* i3 F; k9 f* Q
    75.         },
      ) d\" c0 Q( c2 d/ m
    76.         op==49 : //重载函数o& k6 m; q' V& B' O\" K( W# q
    77.         {
      0 W. `) F$ b( |
    78.                 len[x,0,&m,&n], k=0,
      * r+ w. t: L& c$ [9 F7 d$ p
    79.                 i=0, while{i<m,
      - }/ d- m! S$ ~' A* m. M
    80.                         o["\r\n"], k=k+2, j=0, while{j<n, k=k+o[x(i,j),"  "], j++},
      / r\" H. c4 n4 f5 p! g$ s: Y& q; m
    81.                         i++
      0 S. d# w8 c5 T3 s
    82.                 },0 `2 P2 K\" e2 o; `
    83.                 o["\r\n"], k+2
      % G( p' W4 b5 {
    84.         },9 @( k\" [% H7 c, B/ ]! x/ H) _
    85.         nil     //该数据类型不支持该运算符的重载,返回nil9 K2 _  m+ }9 l% s5 a6 {
    86. };
      / M\" N' q' O: }  }* q
    87. test(:type,a,b,c)=
      3 ]1 _; E& ^1 V
    88.         type=mymatrix(0,0,0,0,0,-1),  //获取新数据类型
      6 W; s. c: U6 M- @+ X! e6 g
    89.         a=new[type,2,3,lu[0.,1.,2.,3.,4.,5.]],  //生成矩阵a/ a$ f( \* Z- c, q; E
    90.         b=new[type,2,3,lu[1.,2.,3.,4.,5.,6.]],  //生成矩阵b
      * F- q$ ^* ^\" G, s: g
    91.         c=new[type,3,2,lu[6.,7.,8.,9.,0.,1.]],  //生成矩阵c  u, r9 G( D  r; U7 `5 u
    92.         o["a=",a, "b=", b, "c=", c],  //输出a、b和c. T. M: q/ S  v\" h
    93.         o["a+b=", a+b],     //计算并输出a+b  k. U. U1 G5 b( T$ ]6 z
    94.         o["a-b=", a-b],     //计算并输出a-b6 J, ?' m0 X  m8 g
    95.         o["a*c=", a*c],     //计算并输出a*c1 Z; k# b( t) a+ D
    96.         o["a.*b=",a.*b],    //计算并输出a.*b- A7 G4 O! z2 h8 g7 a6 q
    97.         o["a./b=",a./b];    //计算并输出a./b
    复制代码
    结果:
    1. a=
      ; H: e0 F) G3 K& w! U6 n
    2. 0.  1.  2.  ( {2 S. g: O8 q* n. p4 a1 R; R
    3. 3.  4.  5.  $ O. }. E/ t: p
    4. b=
      8 T7 @3 R! @, Q- a( X, Q$ r; o
    5. 1.  2.  3.  : R; @2 ~! \$ C0 X! S* B
    6. 4.  5.  6.  , }+ ~1 J+ S) e# E* _! c: i
    7. c=
      / |- N6 W+ N1 F0 z' l; G
    8. 6.  7.  ; I: J9 l' R& A6 T\" Q& i; @4 e
    9. 8.  9.  9 L: S; ~& G7 v' N\" h1 g4 b9 N8 T
    10. 0.  1.  0 J. d( R8 A  o0 s  ?9 J2 f& y
    11. a+b=  d. O! k6 X* s0 r
    12. 1.  3.  5.    @& P: I! ~: u  x: B
    13. 7.  9.  11.  4 z; ]7 _, d+ S# Z4 [8 X
    14. a-b=
      * `! y# g  B, z
    15. -1.  -1.  -1.  # a: p' V\" a1 p- M! J1 ~. ^1 n6 {
    16. -1.  -1.  -1.  ! V  f6 O0 }+ w6 \
    17. a*c=! U6 Y* P& J1 [+ S5 J! Z: x4 p
    18. 8.  11.  
      . [+ A7 e, y9 d0 h% i  i3 Z7 p1 W3 N
    19. 50.  62.  ' B& P$ |) p) V; U
    20. a.*b=) t* p6 x+ ~- S
    21. 0.  2.  6.  
      9 m, P1 {: R! _+ U- m
    22. 12.  20.  30.  
      & _4 b3 x+ h6 D' b
    23. a./b=: V) y2 \: z# n1 Q( k. I
    24. 0.  0.5  0.66666666666666663  ! S' q: {# X( Q. D: w
    25. 0.75  0.80000000000000004  0.83333333333333337  
    复制代码
    当然,在脚本中实现这些重载只是玩弄技巧,用C/C++实现这种重载才是王道,对此,Lu核心库提供了更好的支持。
    回复

    使用道具 举报

    2

    主题

    4

    听众

    20

    积分

    升级  15.79%

  • TA的每日心情
    开心
    2012-4-27 08:39
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    新的一天,心的祝福,祝福健康快乐!欢迎到我博文,喜欢的话请多多关注我吧
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-9-2 11:16 , Processed in 0.451160 second(s), 62 queries .

    回顶部