From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29820 invoked by alias); 6 Mar 2018 21:16:25 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: List-Unsubscribe: X-Seq: 42428 Received: (qmail 29084 invoked by uid 1010); 6 Mar 2018 21:16:25 -0000 X-Qmail-Scanner-Diagnostics: from mail-wr0-f171.google.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(209.85.128.171):SA:0(-1.9/5.0):. Processed in 0.993273 secs); 06 Mar 2018 21:16:25 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_PASS,T_DKIM_INVALID autolearn=ham autolearn_force=no version=3.4.1 X-Envelope-From: stephane.chazelas@gmail.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:mail-followup-to:references :mime-version:content-disposition:in-reply-to:user-agent; bh=y2u2OSpSpCijRszoQnKIxmIcGVNbpZA7X0W50MUxRbM=; b=f55BCGKPcgPCtdZRn0G3pruUQSa6KjXVkvtXPcRiPRjuUUps88v4Tm2LlK1odQBiEk d1j2LSTCJXtEl/J5lsCob0G+bEzE0/dGtl20eXl6iYLyRkemTf7GIb0gbs3LDlmtmmAi pIg/7xvzxSIyLX2YNwBoEWs1gIdxFpr/BUzbkjUJ5wplI06DAVcNDjAKRIcnOfC+pNpJ lQd/2q6cK+WK7Y/lAYkBHkI27uyM3gs2HphWzmJGrT+xovtkJIZpWnYHj7KgNeLjyh8z 12onxukC1mAA8C0nDlRZ4+3YYdD9EYAW7CFeVvQL1hUqsez2dgjqwkwSK7LWab0onfyQ +RoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id :mail-followup-to:references:mime-version:content-disposition :in-reply-to:user-agent; bh=y2u2OSpSpCijRszoQnKIxmIcGVNbpZA7X0W50MUxRbM=; b=ugo96KaxwuJtJbF2Gmw795iY+Y9c7UJ4gDXCaigo801j1F7pl6TNiTnKH7CQCLsP/Y qDTtb8PEE2pBjp3iNrdR/tgV8y9Hn44Gku9nXqUeWerRicb+I69U8qIhpF+PmItZ/Lw1 Tp+C5cfby0qS0Q8EGlys26M2obG981caqEDBKzrQjAnPuJBbfJRPuQ2S2ld/yfEnAqj+ PhAb95LlPWMBUIyMyrT4WiwI5kV4NSl07qmLoloVpx31BGWx2zyMG6VTWT6a4phbEqpq J/xqMpiwdKocrjPUnaeGckR6wxi0FaBzb927pqVSa0/e/mCcSnsE7MWVtHclgQqAKLxW YREA== X-Gm-Message-State: APf1xPC1L1hdHdKUOWPdrCtRZahJF9LGnt5XR6H0n5IkhWxM81IGaaUE 11LiUgqnBurXzlTgPRZPPLLwyA== X-Google-Smtp-Source: AG47ELvTvTfQ0sMDQGMbmNge7NjebbAA8JNLrHRhZ+6ImU+Z28pymMf0FPnkRsTSgPkuJ0zCthdQpg== X-Received: by 10.223.209.65 with SMTP id b1mr16156789wri.277.1520370980205; Tue, 06 Mar 2018 13:16:20 -0800 (PST) Date: Tue, 6 Mar 2018 21:16:17 +0000 From: Stephane Chazelas To: Bart Schaefer Cc: Zsh hackers list Subject: Re: issues with ${array[x][y]} Message-ID: <20180306211617.GA19175@chaz.gmail.com> Mail-Followup-To: Bart Schaefer , Zsh hackers list References: <20180306151644.GA10296@chaz.gmail.com> <180306090231.ZM28167@torch.brasslantern.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <180306090231.ZM28167@torch.brasslantern.com> User-Agent: Mutt/1.5.24 (2015-08-30) 2018-03-06 09:02:31 -0800, Bart Schaefer: > On Mar 6, 3:16pm, Stephane Chazelas wrote: > } Subject: issues with ${array[x][y]} > } > } $ a=(foo bar) > } $ x='a[1][1]' > } $ echo ${(P)x} > } foo > > This is happening because ${{(P)var}[1]} must treat ${(P)var} as an array > any time the name referred to by $var is an array, so array-ness is being > preserved when doing the first a[1] dereference. Note: $ zsh -c 'a=(foo bar); x=a[c=1][d=2]; echo ${(P)x}, $c, $d' foo, 1, The [d=2] part seems to be plainly ignored, it's not as if it was treated as temp_a=($a[1]); echo ${a[2]} which I think is what you're implying. More generally, it seems that anything past what is parsed as a valid variable name or variable with subscript is ignored: $ zsh -c 'a=x; x=a+b; echo ${(P)x}' x > > } There's also a consistency issue in that one can do: > } > } string[1]=x > } > } and reference ${array[1][1]} > } > } but: > } > } $ a[1][1]=b > } zsh: no matches found: a[1][1]=b > > Having ${array[1][1]} is mostly for convenience, because it dates from > before ${${array[1]}[1]} would have been syntactically valid. It was > never intended to work as an assignment. But would we not want that? Since we can do string[1]=x, it seems natural that we would want to be able to do the same thing for array elemments. -- Stephane