●●●●TCL/TKなら俺に聞け 4●●●● (542レス)
1-

338: 2019/02/16(土)13:21 ID:8dsmpsXe(4/5) AAS
数値に変換できるときは勝手に変換してくれるんだね知らなかった
見当違いなこと言ってごめん
339: 2019/02/16(土)13:25 ID:lF7O1vpr(6/6) AAS
なんとなくこれで行ける気もしたのでやってみたのですが

set s [format "%03d %03d %03d" [list $lst]]

だめでした><
もう一息な気がするのであきらめつかずモヤモヤしています
340: 2019/02/16(土)15:44 ID:O+uQ3VIp(1) AAS
代行レスはここへ
2chスレ:operatex

160 名前: [Φ|(|´|Д|`|)|Φ] BBxed!! 臨時で名無しです[] 投稿日:2019/02/16(土) 13:42:57.64
お手数ですがよろしくお願いします。

【板名】プログラム技術
【スレ名】●●●●TCL/TKなら俺に聞け 4●●●●
【スレのURL】2chスレ:tech
【名前欄】代行経由
【メール欄】sage
【本文】↓
>>330
330さんが考えているような書き方は出来ないと思われる。

Tclのリストは空白区切りの単なる文字列です。

list 1 2 3 は3つの要素のリストを生成するが、
"1 2 3" という1つの文字列という扱いです。

よって、set s [format "%d %d %d" $lst] とすると、
set s [format "%d %d %d" "1 2 3"] のように置き換えられます。

求めている回答ではないかも知れませんが、ひと手間かけて以下
のようなことはできます。

リストの各要素をそれぞれ分離して別々の変数にするには、
lassignコマンドを使います。

set lst [list 1 2 3]
lassign $lst x y z

set s [format "%d %d %d" $x $y $z]

これでどうでしょうか。
341: 2019/02/16(土)16:20 ID:STqQL4YT(1/3) AAS
set lst [list 1 2 3]
set s [eval "format {%02d %02d %02d} $lst"]

これでいけました
ほんとうにありがとうございました
342: 2019/02/16(土)16:35 ID:AfCn0+WA(1) AAS
>>330
set s [format "%d %d %d" {*}[list 1 2 3] ]
343: 2019/02/16(土)16:49 ID:vYP1vVnz(1) AAS
eval使ったら負け
344
(2): 2019/02/16(土)16:52 ID:STqQL4YT(2/3) AAS
set lst [list 1 2 3]
set s [format {%02d %02d %02d} {*}$lst]

これでもいけました
ほんとうにありがとうございました
345
(1): 2019/02/16(土)17:07 ID:8dsmpsXe(5/5) AAS
>>344
この書き方初めて見た
いつもforeachで回してたけどこういう書き方もできるんだね
346: 2019/02/16(土)17:11 ID:STqQL4YT(3/3) AAS
んー expand でも検索したつもりだったのになー

外部リンク[html]:www.geocities.co.jp
>なお、{*}は、8.5がαリリースだったときには{expand}というトークンでして、
>このページにも長くそのように書いていましたが、 正式リリースに伴って{*}と変更されました。
347: 2019/02/16(土)18:03 ID:mSqP7pCT(1) AAS
存在を知らないと気付かない機能のリスト
外部リンク:sites.google.com
348: 2019/02/16(土)19:34 ID:kXtbvz/w(1) AAS
>>324
OSと、tcl/tk, Python/Tkinter それぞれのバージョンと、バイナリパッケージでインストールしたなら、
パッケージの入手元は?

>>328
tcl皆無にするなら、tkinterも動かないんわけだけど
349
(1): 2019/02/16(土)22:13 ID:WrrsgfdN(1) AAS
>>345
ver8.4迄はリストをバラして個別に適用するには、evalを使うのが"正統的裏技"だったがver8.5から{*}が導入されマニュアル8.6版のevalの項目ではこちらの使用が推奨されている。
ver8.6のマニュアルでは、eval,info,Tclの項目に小分けして{*}の説明が少しだけある。
350: 2019/02/17(日)11:27 ID:7mUUrd8D(1) AAS
同じ動作をさせてるつもりなのですが
ぬるぬる感が明らかに違うので

tkinter + tix
外部リンク:ideone.com

Tcl/Tk + BWidget
外部リンク:ideone.com

違うものを比べてると言われればそうなのかも知れません
351
(1): 2019/02/17(日)11:34 ID:7MWZQWrl(1) AAS
>>349
*$lst じゃなくて {*}$lst って書かないといけないのは

文法仕様上前者が無理だったということかな
前者が実現出来ない理由が良く判らない
352: 2019/02/17(日)17:33 ID:MVql6Ciy(1) AAS
>>351
多くの言語で、ポインタの内容を *str_pp の様に記す習慣がある。
紛らわしくないように "*" ではなく "{*}" を使用したのかも、単なる趣味かも、判りません
353: 2019/02/18(月)10:22 ID:jrTRVIL4(1) AAS
単なる変数展開と個々の引数としての展開では大きく違うからあえて冗長な書き方をすることでパッと見で両者の区別がつくようにしてるんじゃないかな
354
(1): 2019/02/18(月)15:25 ID:bbNHvPxv(1) AAS
lassign で型限定する方法ない?
355: 2019/02/23(土)22:18 ID:05po+dKO(1) AAS
>>354
やりたいことをもう少し具体的に…(やっぱり難しくてお手上げかもしれないが)
356: 本田 2019/03/08(金)06:16 ID:UCtp3rvd(1) AAS
design patterns in tcl tk - YouTube
動画リンク[YouTube]


Brent B Welch
外部リンク:www.beedub.com
357: 2019/03/10(日)00:10 ID:DeZad1wc(1) AAS
>>332
set s [format "%03d %03d %03d" {*}$lst]
358: 2019/03/10(日)15:03 ID:uFsYqTSV(1) AAS
>>344
359: 本田 2019/04/07(日)22:45 ID:vq1byQ+H(1) AAS
Tcl-Tk vs Wx Widgets
外部リンク:wiki.tcl-lang.org

wxWidgets - Workshop Complex at bitWalk - Fuhito Suguri
外部リンク[php]:bitwalk.sitemix.jp
360: 本田 2019/04/19(金)06:32 ID:MQ2wvTRS(1) AAS
Xilinx Tcl Store
外部リンク[html]:japan.xilinx.com
361: 2019/04/19(金)08:27 ID:K+Fou2p2(1) AAS
Tcl/Tkだろ!ボケ!
362: 2019/04/19(金)12:10 ID:aQMMTHRZ(1) AAS
Tkは無いのかもしれないよ
363: 本田 2019/06/15(土)06:50 ID:ly/5wdGU(1) AAS
[PDF]Catenation and Operand Specialization For Tcl Virtual Machine
外部リンク[pdf]:www.eecg.utoronto.ca

[PDF]Alternative dispatch techniques for the Tcl VM Interpreter
外部リンク[pdf]:www.cs.toronto.edu

[PDF]Alternative Dispatch Techniques for the Tcl VM
外部リンク[pdf]:www.cs.toronto.edu
364: 本田 2019/06/19(水)06:47 ID:7+Fihow6(1) AAS
[PDF]A History of Tcl in the Browser - Tcl Community Association
外部リンク[pdf]:www.tclcommunityassociation.org
365: 2019/06/24(月)19:46 ID:c6qVqrI9(1) AAS
tkinter の話で申し訳ないのですが、
tcltk側の関数が返してくる tcl形式リスト(文字列)をpython 形式のリストに変換するにはどうしたらいいのでしょうか?

>>> import tkinter
>>> root = tkinter.Tk()
>>> root.tk.eval("package require math::fourier")
'1.0.2'
>>> root.tk.eval("math::fourier::dft %s" % tkinter._stringify([1, 2, 3]) )
'{6.0 0.0} {-1.499999999999999 0.8660254037844388} {-1.499999999999999 -0.8660254037844388}'

math::fourier::dft (離散フーリエ変換) を例として取り上げました。
tkinter._stringify は丁度よくpython形式のリストを整形してくれます。
[1, 2, 3 ] → { 1 2 3 }
ですが、その逆が分かりません。
366: 2019/06/25(火)13:56 ID:pO4dP3rM(1/2) AAS
解決しました。 eval を使わず、call を使えということですね。
>>> root.tk.call("math::fourier::dft", [1, 2, 3] )
((6.0, 0.0), (-1.499999999999999, 0.8660254037844388), (-1.499999999999999, -0.8660254037844388))
367: 2019/06/25(火)17:08 ID:XhZtJiMw(1) AAS
よくみろ
それは list じゃなくて tuple だ
1-
あと 175 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.012s